概述
信号量(semaphore)是一种用于提供不同进程间或者一个给定进程的不同线程间同步手段的原语。
本文讨论:
1.Posix 有名信号量:使用Posix IPC 名字标识,可用于进程或线程间的同步。
2.Posix 基于内存的信号量:存放在共享内存区中,可用于进程或线程间的同步。
我们暂时只考虑不同进程间的同步。首先考虑二值信号量(binary semaphore):其值或为0或为1的信号量。
Posix 信号量不必在内核中维护。另外,Posix 信号量是由可能与文件系统中的路径名对应的名字来标识的,但是并不要求它们真正存放在文件系统内的某个文件中。
由上图可看出,进程可以在某个信号量上执行三种操作:
1.创建一个信号量。要求调用者指定初始值,对于二值信号量来说,它通常是1,但也可以是0。
2.等待一个信号量。该操作会测试这个信号量的值,如果其值小于或等于0,