信号量的基本概念:
信号量的本质是一种数据操作锁,它本身不具有数据交互的能力,而是通过控制其它的通信资源来实现进程间通信,它本身只是一种外部资源的标识。信号量在此过程中负责数据操作的同步与互斥等功能。
互斥:对临界资源的独占。
临界资源:多个进程能够访问共用的资源。
临界区:访问临界资源的一段代码。
同步:带有顺序性的访问,大多数的同步是建立在互斥的基础上的。
原子性:只有一种状态或者只有一条汇编代码。
信号量实际上就是计数器。
信号量的工作原理:
由于信号量只能进行两种操作等待和发送信号,即P(sv)和V(sv),他们的行为是这样的:
P(sv):如果sv的值大于零,就给他减一;如果它的值为零,就挂起该进程;
V(sv):如果有进程因等待sv被挂起,就让它恢复运行,如果没有进程因等待它而挂起就给他加1.
信号量的意图:
信号量的意图在于进程间同步,互斥锁和条件变量的意图则在于线程间的同步。但是信号量也可以用于线程间,互斥锁和条件变量也可以用于进程间。应根据原语决定使用哪种机制。
comm.h
comm.c
test.c
原文:http://10548202.blog.51cto.com/10538202/1826433