浅析信号量(Semaphore)和互斥(Mutex)
来源:互联网 发布:a标签title属性 seo 编辑:程序博客网 时间:2024/04/30 09:19
信号量和互斥是在多线程环境中必备资源,很多网友对它都有很丰富的经验和深刻的教训。因为这篇文章不将重点于如何使用信号量或者是互斥,而是从概念上简述他们之间的一些关系。
信号量一般有两种运用,一是所谓的binary semaphore,它的值只有0或者1,从技术角度看它可以产生类似于互斥的功能,但是它们有区别:
那么我们在什么情况下使用信号量或者是互斥呢?我的个人意见是对于多进程之间资源的保护,信号量的使用一般比较方便,因为如果使用互斥的话,在按照posix1标准实现的系统中,我们往往要把互斥存放在共享内存中,以便进程之间能够相互访问。如果我们运用的系统是多线程,那么互斥的使用可能更加的容易,并且相对容易调试,因为互斥的释放只能是在获取线程中,减少了线程之间的太多关联。
上面仅仅是我个人对信号量和互斥的一个理解,里面不免会搀杂着很多的个人观点,或许还是不正确的,请网友指正!谢谢!
信号量一般有两种运用,一是所谓的binary semaphore,它的值只有0或者1,从技术角度看它可以产生类似于互斥的功能,但是它们有区别:
- 信号量的释放不一定是已经获取信号量的线程,但是互斥的释放一定要是已经获取互斥的线程。
- 信号量的初始值可以是0,其他线程可以通过post或者up之类的函数增加这个值,但是互斥的初始化值一定是一个有效的值。
- 信号量一般情况下无法实现递归获取和释放,但是互斥一般有递归获取和释放。
那么我们在什么情况下使用信号量或者是互斥呢?我的个人意见是对于多进程之间资源的保护,信号量的使用一般比较方便,因为如果使用互斥的话,在按照posix1标准实现的系统中,我们往往要把互斥存放在共享内存中,以便进程之间能够相互访问。如果我们运用的系统是多线程,那么互斥的使用可能更加的容易,并且相对容易调试,因为互斥的释放只能是在获取线程中,减少了线程之间的太多关联。
上面仅仅是我个人对信号量和互斥的一个理解,里面不免会搀杂着很多的个人观点,或许还是不正确的,请网友指正!谢谢!
- 浅析信号量(Semaphore)和互斥(Mutex)
- 浅析信号量(Semaphore)和互斥(Mutex)
- Semaphore和Mutex -- Linux下的互斥机制分析
- 互斥信号量(mutex)
- mutex线程控制和信号量semaphore
- 互斥(mutext)和信号量(semaphore)的区别
- C++多线程框架-----Mutex互斥和Sem信号量
- 浅析ucosII互斥信号量
- linux mutex互斥体和semaphore信号量的区别
- Mutex与Semaphore 第三部分:互斥的问题
- C++多线程框架 (二)---------Mutex互斥和Sem信号量
- C++多线程框架 (二)---------Mutex互斥和Sem信号量
- C++多线程框架 (二)---------Mutex互斥和Sem信号量
- mutex和semaphore
- 理解Semaphore和Mutex
- 理解Semaphore和Mutex
- Semaphore和Mutex比较
- Mutex和Semaphore区别
- 防止应用程序多次执行(在进程里只一个)
- Spring MVC 入门
- Linux中用CVSNT进行目录、文件的权限设置
- 编程等级描述表
- 传统web应用程序里程碑式的转变----AJAX技术
- 浅析信号量(Semaphore)和互斥(Mutex)
- test
- 学习NHibernate
- 关于Format格式化字符串小数点的应用
- 自定义IE地址栏图标
- java 版本含义
- 未婚男子必读的31条感悟
- webMethods之components
- boost 1_33_1在VC6.0上的安装、编译、配置