线程同步之条件变量属性
线程条件变量可以是线程以非竞争的方式同步执行。
线程条件变量支持两个属性:进程共享与时钟属性。
进程共享属性可以使条件变量被多进程的线程使用。
时钟属性控制计算pthread_cond_timedwait()
函数的超时参数(tsptr
)时采用哪个时钟。
专注于工业物联网行业数据采集,嵌入式Linux系统裁剪,5G智慧网关软件开发等
线程条件变量可以是线程以非竞争的方式同步执行。
线程条件变量支持两个属性:进程共享与时钟属性。
进程共享属性可以使条件变量被多进程的线程使用。
时钟属性控制计算pthread_cond_timedwait()
函数的超时参数(tsptr
)时采用哪个时钟。
本文介绍了线程的同步对象读写锁的属性,通过读写锁属性可以控制在线程之间使用读写锁同步时的行为。
线程的读写锁仅支持进程共享属性。
本文主要介绍了线程同步对象互斥量的相关属性,并通过代码验证了这些属性。
通过这些线程同步对象的属性可以控制不同线程在使用互斥量进行同步时的行为。
SUS定义了一些系统层面上对于线程的限制,比如进程可以创建的最大线程数、线程栈可用的最小字节数等等。
pthread
接口允许我们传入线程或同步对象的属性来调节线程或同步对象的行为。
信号集(sigset_t
)是表示多个信号的数据类型。
不同的信号编号可能会超过一个整型量的位数,所以不能用整型量中的一位代表一个信号。
POSIX.1定义数据类型sigset_t
用以表示信号集,并定义了信号的操作函数。
可靠信号的处理有两个过程如下:
kill
函数)发生时,内核会为进程产生一个信号,同时在进程表中设置一个标志。不可靠信号指的是信号可能会丢失,不支持信号阻塞,不能控制是否重启中断的系统调用等等。
下面是不可靠信号可能会出现的问题:
信号是软件中断。
信号提供了一种处理异步事件的方法。
信号用于大多数复杂的应用程序中。
Unix系统的早期版本就已经提供了信号机制,但不可靠。POSIX.1对可靠信号例程进行了标准化。
屏障(barrier)是用户协调多个线程并行工作的同步机制。
屏障允许每个线程等待,直到所有的合作线程都到达某一点,然后从该点继续执行。
pthread_join
是一种特殊的屏障,允许一个线程等待,直到另一个线程退出。
互斥量防止多个线程同时访问同一共享变量。
条件变量允许一个线程就某个条件(共享变量)的变化状态通知其他线程,并让其他线程等待(阻塞于)该通知。
条件变量与互斥量一起使用,允许线程以无竞争的方式等待特定的条件发生。