Linux进程同步机制

1. 互斥锁

主要用在线程间,虽然通过改变它的属性可以支持进程间,但并非所有平台都支持,所以应当仅在线程间用。

2. 条件变量

只用在线程间,条件变量更像是一种通知机制(条件满足了通知等待的用户),它所附加的互斥锁既用于保护条件变量本身,

也用于保护业务变量,之所以把这个互斥锁交给内核代管是为了操作的原子性。

3. 信号量

信号量设计为进程间通信机制,所以应当用在进程间。

(1)最常用的是二元信号量,此时,它俨然就是把锁,原理跟线程间的互斥锁一样。

(2)用作多元信号量时,它的作用其实更像是一种并发数目的限定。

(3)对于信号量函数semop如何使用,理解的关键点是sem_op为正时不等待,为0或负时等待。

(4)在书中例子中,它对sem_op使用-1表示释放,这与常规用法相反。

你可能感兴趣的:(Linux开发)