二进制信号量和互斥量之间有区别吗?或者它们本质上是相同的?


当前回答

互斥量和二进制信号量是相同的用法,但实际上,它们是不同的。

对于互斥锁,只有锁定了它的线程才能解锁它。如果有其他线程来锁定它,它将等待。

对于信号电话来说,情况就不是这样了。信号量没有与特定的线程ID绑定。

其他回答

最好的解决方案

唯一的区别是

1.互斥锁-> lock和unlock属于锁定互斥锁的线程。

2.信号量->没有所有权,即;如果一个线程调用semwait(s),任何其他线程都可以调用sempost(s)来移除锁。

互斥量和二进制信号量是相同的用法,但实际上,它们是不同的。

对于互斥锁,只有锁定了它的线程才能解锁它。如果有其他线程来锁定它,它将等待。

对于信号电话来说,情况就不是这样了。信号量没有与特定的线程ID绑定。

修改问题是-互斥量和“二进制”信号量在“Linux”中的区别是什么?

答:以下是它们的区别 i)作用域——互斥锁的作用域在创建它的进程地址空间内,用于线程同步。而信号量可以跨进程空间使用,因此它可以用于进程间同步。

ii)互斥量是轻量级的,比信号量更快。Futex甚至更快。

iii)同一线程可以成功多次获得互斥锁,条件是互斥锁释放次数相同。其他线程试图获取将阻塞。而对于信号量,如果同一个进程试图再次获取它,它会阻塞,因为它只能获得一次。

互斥量是任何想要解决临界区问题的算法都必须遵循的标准,而二进制信号量本身是一个可以取0和1值的变量。

在窗口,差异如下所示。 MUTEX:成功执行等待的进程必须执行一个信号,反之亦然。二进制信号量:不同的进程可以在一个信号量上执行等待或信号操作。