【发布时间】:2015-05-12 14:52:25
【问题描述】:
条件变量是 c++11 的一个方面,我还在苦苦挣扎。从我收集的内容来看,条件变量与信号量非常相似。
但话又说回来,信号量不需要锁来工作。条件变量可以。而锁又需要一个互斥锁。因此,为了使用信号量相当简单的功能,我们现在不仅需要管理条件变量。但也是互斥体和锁。
那么为什么条件变量需要这个?加上这个要求又提供了哪些附加功能?
【问题讨论】:
-
互斥锁是锁。线程类锁只是对互斥体的 RAII 包装器,因此它不是托管的,而是在本地使用的。
-
切向相关:您可以很容易地根据互斥锁和条件变量实现信号量。条件变量只是一个不同的等待原语;它们使等待一般的、用户代码表达的条件变得更容易。
-
这不是重复的。这个问题是关于 C++11 的,在这种情况下,为 pthreads 条件变量给出的答案不适用。另请参阅 Mike Vine 答案的底部。
标签: c++ multithreading c++11 concurrency flags