二值信号量与互斥锁区别

 

信号量
有两种操作会影响计数信号量的值:tx_semaphore_get和tx_semaphore_put。get操作将信号量减少1。如果信号量为0,则get操作失败。与get操作相反的是put操作,它将信号量增加1。

二值信号量
与互斥锁一样,信号量也经常用于互斥,把信号量的计数设为1即可。

这种信号量称为二值信号量。但信号量不支持所有权,而所有权是互斥锁的核心概念。

所以线程不能对它已经控制的信号量再执行get操作,第二个get会失败,并可能无限期地挂起线程,使资源永久不可用。

二值信号量与互斥锁最大的区别,就是前者不支持优先级继承,而后者支持并能解决优先级反转的问题。

即便如此,信号量更加通用,还可以用于事件通知和线程间同步。且信号量速度快于互斥锁。

 

————————————————
版权声明:本文为CSDN博主「之江小林」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43739110/article/details/118223142

posted @ 2022-06-30 17:05  sinferwu  阅读(325)  评论(0编辑  收藏  举报