高级IO:非阻塞IO【Unix编程】
阻塞IO: 阻塞IO是指在进行IO操作(如读写文件、网络通信等)时,如果数据不可用或者操作未完成,程序会暂停执行,等待IO操作完成后才继续。这意味着程序在等待期间无法执行其他任务。
2528 字
|
13 分钟
线程同步:条件变量【Unix编程】
条件变量(Condition Variable)是多线程编程中常用的一种同步机制,它主要用于线程之间的协调和通信,使线程能够在某些条件满足时被唤醒,或者等待某些条件发生。条件变量通常和互斥锁(Mutex)一起使用。 工作过程:
2051 字
|
10 分钟
线程同步:互斥锁【Unix编程】
在变量修改时间多于一个存储器访问周期的处理器结构中,当存储器读与存储器写这两个周期交叉时,这种不一致就会出现。线程 A读取变量然后给这个变量赋予一个新的数值,但写操作需要两个存储器周期。当线程B在这两个存储器写周期中间读取这个变量时,它就会得到不一致的值。 为了解决这个问题,线程不得不使用锁,同一时间只允许一个线程访问该变量。图11-8描述了这种同步。如果线程B希望读取变量,它首先要获取锁。同样,当线程A更新变量时,也需要获取同样的这把锁。这样,线程B在线程A释放锁以前就不能读取变量。 多个线程同时读取同一个文件内容,加1,然后把结果各自写回。由于读取和写入不是原子的,可能出现比如三个线程都读到0,各自加1,然后都写回1,最终文件里只加了一次,而不是三次。
3644 字
|
18 分钟
进程控制【Unix编程】
每个进程都有一个非负整型表示的唯一进程ID。但是进程ID是可复用的。当一个进程终止后,其 进程ID就成为
5079 字
|
25 分钟
进程环境【Unix编程】
C程序总是从main函数开始执行,从main函数结束执行。即main是程序的入口和出口。 当内核执行C程序时(使用一个exec函数),在调用main前先调用一个特殊的启动例程。可执行程序文件将此启动例程指定为程序的起始地址——这是由连接编辑器设置的,而连接编辑器则由C编译器调用。启动例程从内核取得命令行参数和环境变量值,然后为按上述方式调用main函数做好安排。
3817 字
|
19 分钟
Fedora(GNOME DE)自定义屏幕缩放
2025-08-03
Fedora支持设置分辨率缩放,但对于众多的屏幕规格,默认的缩放选项可能无法满足所有需求。 系统自带的缩放比例仅有以下规格:100%、125%、150%、175%、200%、225%等。假设我主屏幕缩放在200%,为了使副显示器屏幕中的文字大小或软件窗口等元素与主屏幕一致(逻辑PPI相同),需要调整的缩放常常在两个档位之间。
830 字
|
4 分钟
UART通讯协议详解
UART是“Universal Asynchronous Receiver/Transmitter”,通用异步收发器的缩写。它包括了RS232、RS449、RS423、RS422和RS485等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。
1301 字
|
7 分钟
SPI通讯协议详解
SPI(Serial Peripheral Interface,串行外设接口)是一种由Motorola公司提出的同步串行通信协议,常用于微控制器与各类外部设备(如传感器、存储器、显示屏等)之间的短距离通信。ISPI实际上指的是SPI的改进或定制实现,通常用于工业领域,强调高可靠性和抗干扰能力,但其基本原理与标准SPI类似。
1399 字
|
7 分钟