Linux并发(控制线程不撞车的红绿灯)
2016-03-22 10:09
549 查看
信号量就是代码世界里的红绿灯,没有它,许多代码横冲直撞必将导致严重的“车祸”。
拓展:
LINUX中可能用到的信号量有3种:
Ststem-V信号量
POSIX有名信号量
POSIX无名信号量
他们虽然有很多显著不同的地方,但是最基本的功能室一致的:用来表征一种资源的数量,当多个进程或者线程争夺这些稀缺资源的时候,信号量用来保证他们合理地、秩序地使用这些资源,而不会陷入逻辑谬误之中。
System-V的信号量非常类似于停车场的卡牌,想象一个有N个车位的停车场,每个车位是立体的可升降的,能停n辆车,那么我们可以用一个拥有N个信号量元素,每个信号量元素的初始值等于n的信号量来代表这个停车场的车位资源——某位车主要把他的m辆车开进停车场,如果需要1个车位,那么必须对代表这个车位的信号量元素申请资源,如果n大于等于m,则申请成功,否则不能把车开进去。
从这个比喻中得知:System-V的信号量并不是单个的值,而是一组(事实上是一个数组)信号量元素构成的,当我们需要多个资源,比如多个车位时,可以同时向多个信号量元素申请。
信号量的P、V操作最核心的特征是:他们是原子性的,也就是说对信号量元素的值的增加和减少,系统保证在CPU的电气特性级别上不可分割,这跟整型数据的加减法有本质的区别。
相关文章推荐
- Centos 6.5安装最新版谷歌浏览器-Chrome
- php获取Linux网卡信息
- centos 6.5 设置屏幕保护
- Linux连接Microsoft SQL Server数据库
- Linux环境使用Python连接Microsoft SQL Server
- linux软链接ln命令的用法
- CentOS6.5解决中文乱码与设置字符集
- Centos6.5离线配置CDH5.1心得和遇到的问题(已安装成功)
- fdisk命令详解
- Linux 下解压.tar.gz文件报错 gzip:stdin:not in gzip format 的解决办法
- centOS配置SSH无密码登录
- linux下的压缩和解压缩的命令总结
- Linux下压缩解压缩命令详解
- linux 中的vim的配置文件的位置
- Linux & Mac curl 命令行使用——POST&GET
- CentOS下tar解压 gz解压 bz2等各种解压文件使用方法
- linux命令
- CentOS6.5把MySQL从5.1升级到5.6后,MySQL不能启动
- centos绑定多个域名
- 二、Linux学习之centOS的的setup