互斥量和信号量 = 1 之间的区别? [复制]

Posted

技术标签:

【中文标题】互斥量和信号量 = 1 之间的区别? [复制]【英文标题】:Difference between Mutex and Semaphore=1? [duplicate] 【发布时间】:2017-11-19 18:44:19 【问题描述】:

以下两个变量有什么区别:

Mutex m;
Semaphore s = 1;

我认为它们是相同的,但在我正在观看的有关阅读器/编写器问题的公式的视频中,它说使用5 信号量,每个信号量都从1 的值开始。我觉得这很有趣,因为我认为如果您有一个值为 1 的信号量,那么您只需使用互斥锁即可。

【问题讨论】:

@DougCurrie 谢谢。我永远不会知道搜索 Binary Semaphore。这包含了我需要的所有信息。 【参考方案1】:

将 Mutex 视为信号量定义的子集。

这里有一个关于 Stack Overflow 的好答案:Difference between binary semaphore and mutex。

Mutex 只能由获得它的线程释放,而你 可以从任何其他线程(或进程)发出信号量,所以信号量 更适合一些同步问题,比如 生产者-消费者。

【讨论】:

以上是关于互斥量和信号量 = 1 之间的区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Java 中的互斥量和信号量是啥?主要区别是啥?

锁、互斥量和信号量有啥区别?

信号量与互斥锁区别

使用互斥量和信号量的屏障实现

理解互斥量和信号量

这个解决哲学家就餐问题 (dpp) 的解决方案是如何工作的?互斥量和信号量