目录
概念
信号量(集)(semaphore),也叫信号灯(集)。它是不同进程间或一个给定进程内部不同线程间同步的机制。
一、信号量的分类
1》二值信号灯:
值为0或1。与互斥锁类似,资源可用时值为1,不可用时值为0。
2》计数信号灯:
值在0到n之间。用来统计资代表源,其值可用资源数
二、P/V操作
1》p操作 ---变红
p操作也叫等待操作,是等待信号灯的值变为大于0,然后将其减1;
2》V操作 ---变绿
V操作也叫释放操作,用来唤醒等待资源的进程或者线程
三、信号量相关函数
1、创建或获取信号量
int semget(key_t key, int nsems, int semflg);
//参数1 ----- key
//参数2 ----- 信号量集合中信号灯的个数
//参数3 ----- 权限:信号灯集的访问权限,通常为IPC_CREAT | 0666
//返回值 ---- 成功:信号量的ID,失败:-1
例如:
int main(void)
{
key_t key;
int sem_id;
&