一. 信号量
在进程间通信中有一种通信机制是信号量,它往往标识着一个临界资源的有无来控制不同的进程是否能访问到这个临界资源,它创建出来一般是一个信号量集的形式。
这里要提到的信号量,也是一个计数器,用来标识资源的个数,我们知道完成线程之间的互斥可以使用互斥锁,其实mutex也可以认为是一个计数器标识资源的可用数量,只是它的值非0即1,加锁时表示要使用资源,将mutex减1,释放锁表示有资源可用,将mutex的值还原为1。
而信号量和mutex类似,只是它标识资源的数量可以大于1,用来实现线程间的同步,即,如果信号量的值为1,则可以认为和互斥锁一样。下面要谈及的是POSIX semaphore库函数,这种信号量不仅可以用于同一进程的线程间同步,也可用于不同进程间同步。
-------------------------------------------------------------------------------------------
二. 信号量函数
信号量的创建及销毁
函数参数中,
sem是一个指向sem_t也就是信号量类型的一个指针;
pshared表示该信号量是否用于不同进程间同步,为0表示用于同一进程的线程间同步;
value表示要将该信号量初始化的值;
函数参数中,sem表示要销毁哪一个信号量;
2. 信号量值的增加及减少