在介绍了软件与硬件对于进程互斥访问临界资源后,接下来了解一种新的机制:信号量机制。
信号量机制
PV操作
- P操作:wait原语,进程等待;
- V操作:signal原语,唤醒等待进程;
整型信号量
如下图所示,整型信号量的原理违背“让权等待”,会发生忙等。

由于使用了while循环,导致了忙等。为了克服这一缺点,引入阻塞队列即可。
记录型信号量
记录型信号量会在进程申请访问临界区资源失败后进入阻塞状态,不会发生忙等。每当一个线程从临界资源出来后,自动恢复信号量的值,一方面会唤醒阻塞队列的队首的进程,同时只要当前申请使用(包括正在使用)临界资源的数量大于临界资源量,新到的进程都会进入阻塞队列的队尾。
