信号量机制
信号量(Semaphore)机制是一种卓有成效的进程同步工具。
1,整型信号量
把整型信号量定义为一个表示资源数目的整型量S
,除初始化外,仅能通过两个标准的原子操作wait(S)
和signal(S)
来访问。
wait(S)和signal(S)操作可以描述为:
wait(S){
while( S <= 0) do no-op;
S--;}
signal(S){S++;}
wait(S)和signal(S)是两个原子操作,它们在执行时是不可中断的。当一个进程在修改某信号量时,没有其他进程能同时对该信号量进行修改。
在整型信号量机制中的wait操作中,只要是信号量S<=0,就会不断地测试。因此该机制没有遵循“让权等待”准则,而是使进程处于“忙等”的状态。
2,记录型信号量
Typedef struct{