1、信号量
多线程程序中总有一部分临界代码,编程人员必须确保只有一个进程可以进入临界代码并拥有对资源的独占式访问权。使用信号量机制可以确保进程之间的并发执行。信号量是一个特殊的变量,只允许对它进行等待(wait)和发送信号(signal)这两种操作,即PV操作:
P——用于等待
V——用于发送信号
》》》PV操作的定义
P(sv)——sv > 0,sv -= 1。sv = 0挂起进程的执行。
V(sv)——如果有其他进程因等待sv而被挂起,则恢复该进程的执行。如果没有进程因等待sv挂起,则sv = sv + 1。
semaphore sv = 1;
loop forever
{
P(sv);
critical code section;
V(sv);
noncritical code section;
}
2、Linux信号量机制
1)semget
#include <sys.sem.h>
int