c++ - C++ 标准中的条件变量与互斥锁

标签 c++ synchronization

<分区>

我不明白条件变量和互斥量之间的区别。在我看来,它描述得不够清楚。

有人可以独立于任何编程语言来解释它吗?还有 C++ std 特定的解释?

最佳答案

用例非常不同。互斥量非常原始,它们只是确保只有一个线程可以锁定它。条件变量让您可以模拟更复杂的情况,因为任何线程都可以向被阻塞的线程发出继续运行的信号。

典型情况是:

浴室:您想确保任何时候只有一个人可以使用。当人进入时,它会锁上门,并在完成后将门打开。那将是一个互斥体。

生产链:多个 worker 生产元素 A, worker W 需要该元素来生产元素 B。每当一个 worker 完成元素 A 时,他们将其放入队列并向 worker W 发出信号,他们可以继续处理 B . 那将是一个条件变量(条件是:项目 A 可用)。

关于c++ - C++ 标准中的条件变量与互斥锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58167109/

相关文章:

c++ - 现有 win 控制台应用程序的简单 GUI 插件

iphone - SQlite同步方案

sql-server - 使用同步框架时,如何在客户端使用 SQL Server 更改跟踪服务器端跟踪更改?

c++ - 在给定数组中找到所有唯一的三元组,总和为零,执行时间最短

c++ - 来自其他线程的回调

c++ - 如何检查数组的3个元素是否具有相同的值

c++ - 如何在 std::list 中使用递归?

c++ - 多线程环境下的rocksdb

android - Android Gradle同步失败

c - 单链表插入同步