信号量
来源:互联网 发布:用跳蛋是什么体验知乎 编辑:程序博客网 时间:2024/05/23 12:34
信号量(又名:信号灯)与其他进程间通信方式不大相同,主要用途是保护临界资源。
进程可以根据它判定是否能够访问某些共享资源。除了用于访问控制外,还可用于进程同步。
二值信号灯:信号灯的值只能取0或1,类似于互斥锁。 但两者有不同:
信号灯强调共享资源,只要共享资源可用,其他进程同样可以修改信号灯的值;
互斥锁更强调进程,占用资源的进程使用完资源后,必须由进程本身来解锁。
计数信号灯:信号灯的值可以取任意非负值。
下面是信号量的相关函数
semget
函数作用:创建信号量
函数原型:int semget(key_t key,int nsems,int semflg)
函数参数:nsems:信号量数目,通常取一个
semflg:与open权限一样
返回值:成功则返回信号量标识符;出错-1
semctl
函数作用:信号量的控制,初始化,删除等
函数原型:int semctl(int semid,int semnum,int cmd,union arg)
函数参数:semnum1,通常为0,第一个信号量
cmd:IPC_STAT
IPC_SETVAL:设置arg中的val值
IPC_GETVAL:获取信号量的值
IPC_RMID:删除信号量
返回值:cmd不同,返回值不同。IPC_GETCAL返回信号量的值,其余的成功返回0,出错-1
semop
函数作用:执行PV操作
函数原型:int semop(int semid,struct sembuf *sops,size_t nsops)
函数参数:struct sembuf *sops:
sem_op = -1,P操作
sem_op = 1,V操作
nsops = 1
返回值:信号量标识符,出错-1
0 0
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- <>信号量
- 信号量
- 信号量
- Modern C++(二)Range-based for loop(基于范围的for循环)
- 【leetcode】419. Battleships in a Board【E】
- 欢迎来到http://blog.csdn.net/chengmenghui_oop博客!
- 开篇介绍和工程目录结构【从零开始搭建android框架系列(1)】
- SoapUI integrated with Jenkins
- 信号量
- Android中的?attr/和?android:attr/
- 彻底理解PHP的SESSION机制
- 序言集——琴香
- 不容错过,最全的安卓架构合集【从零开始搭建android框架系列(2)】
- Spring mvc中@RequestMapping 6个基本用法小结
- 有趣——windows键盘消息截获
- 8.nginx源码分析之数据结构:ngx_list_t
- google官方架构MVP解析与实战【从零开始搭建android框架系列(3)】