假定有一个信号量变量sv,
P(sv):用于等待,如果sv大于0,就给它减去1,如果它的值等于0,就挂起该进程的执行
V(sv):用于发送信号,如果有其他进程因等待sv而挂起,就让它恢复运行,如果没有进程因等待sv而被挂起,就给它加1
semaphore sv=1;
loop forever{
P(sv);
critical code section;
V(sv);
noncritical code section;
}
信号量函数定义如下所示:
#include<sys/sem.h>
int semctl(int sem_id, int sem_num, int command, ...);//用来直接控制信号量信息
int semget(key_t key, int num_sems, int sem_flags);//创建一个新信号量或取得一个已有信号量的键
int semop(int sem_id, struct sembuf *sem_ops, size_t num_sem_ops);//用于改变信号量的值
/* After the #includes, the function prototypes and the global variable, we