信号量与 PV 操作
概念
信号量(semaphore)
- 一个进程在某一特殊点上被迫停止执行直到接收到一个对应的特殊变量值,这种特殊变量就是信号量
- 记录型信号量
struct semaphore { int count; queue_t waiting_queue; }
PV 操作
- 荷兰语中“检测”(Proberen)和“增量”(Verhogen)的首字母
void P(semaphore s) { s.count--; if (s.count < 0) { 将此进程放入信号量 s 的等待队列; 阻塞此进程; } } void V(semaphore s) { s.count++; if (s.count <= 0) { 从等待队列取出一个进程; 将此进程设为就绪态; } }