<分区>
我不明白条件变量和互斥量之间的区别。在我看来,它描述得不够清楚。
有人可以独立于任何编程语言来解释它吗?还有 C++ std 特定的解释?
<分区>
我不明白条件变量和互斥量之间的区别。在我看来,它描述得不够清楚。
有人可以独立于任何编程语言来解释它吗?还有 C++ std 特定的解释?
最佳答案
用例非常不同。互斥量非常原始,它们只是确保只有一个线程可以锁定它。条件变量让您可以模拟更复杂的情况,因为任何线程都可以向被阻塞的线程发出继续运行的信号。
典型情况是:
浴室:您想确保任何时候只有一个人可以使用。当人进入时,它会锁上门,并在完成后将门打开。那将是一个互斥体。
生产链:多个 worker 生产元素 A, worker W 需要该元素来生产元素 B。每当一个 worker 完成元素 A 时,他们将其放入队列并向 worker W 发出信号,他们可以继续处理 B . 那将是一个条件变量(条件是:项目 A 可用)。
关于c++ - C++ 标准中的条件变量与互斥锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58167109/