标签: multithreading synchronization mutex condition-variable
我在stackoverflow上阅读了几篇关于差异的帖子(例如,here),但没有一个给出明确的解释。
想知道需要使用一个而不是另一个的场景是什么?为什么?
答案 0 :(得分:0)
在深入研究这个概念后,我意识到决定性的差异。
互斥锁提供互斥语义,线程在另一个关键部分的线程上阻塞。另一方面,条件变量不需要另一个线程。这是一个线程阻塞的条件。
以生产者/消费者队列为例。如果队列为空,则消费者将阻止此条件而不是另一个生产者/消费者线程。