「一般信号量」指的是一种特殊的信号量,其取值允许为非负整数,主要用于进程间的一般进程同步。设 value
,另一个为信号量队列 queue
,P 和 V 操作原语分别定义为
typedef struct semaphore {
int value;
struct pcb *list;
};
void P(semaphore &s){
s.value--;
if(s.value<0) sleep(s.list);
}
void V(semaphore &s){
s.value++;
if(s.value<=0) wakeup(s.list);
}