互斥和条件变量之间的决定性差异是什么?

时间:2017-04-19 14:28:13

标签: multithreading synchronization mutex condition-variable

我在stackoverflow上阅读了几篇关于差异的帖子(例如,here),但没有一个给出明确的解释。

想知道需要使用一个而不是另一个的场景是什么?为什么?

1 个答案:

答案 0 :(得分:0)

在深入研究这个概念后,我意识到决定性的差异。

互斥锁提供互斥语义,线程在另一个关键部分的线程上阻塞。另一方面,条件变量不需要另一个线程。这是一个线程阻塞的条件。

以生产者/消费者队列为例。如果队列为空,则消费者将阻止此条件而不是另一个生产者/消费者线程。