条件变量和共享互斥锁
Condition variable and shared mutex
我想知道为什么我不能在 C++14(或 17)中执行此操作
std::shared_timed_mutex mutex;
std::unique_lock<std::shared_timed_mutex> lock(mutex);
std::condition_variable var;
while(!some_condition)
var.wait(lock);
条件变量似乎只适用于 std::mutex。但是为什么?
这是由标准定义的,以允许实现的最大效率。如果要将不同的锁与condition_variable
一起使用,则需要使用 condition_variable_any
.请注意,condition_variable_any
实现有一些开销。
引用标准:30.5 条件变量
类
condition_variable
提供了一个条件变量,该变量只能 等待类型为unique_lock<mutex>
的对象,允许最大值 在某些平台上的效率。
相关文章:
- C++子类共享变量?
- 子目录之间的 CMAKE 共享变量
- 如何在不同的CMakeList.txt之间共享变量?
- OpenMP 任务看不到共享变量的更改
- OpenMP:当我按线程 ID 访问共享变量时,我是否需要一个关键部分
- 多个 OpenMP 线程读取(而不是写入)共享变量的性能成本?
- 在 pthread 中使用共享变量
- 提升线程问题,当一个线程与另一个线程没有相同的副本时如何共享变量?
- C :与多个文件共享变量
- 使用共享变量进行线程处理
- 是否要确保一个线程修改的任何数据类型的共享变量对其他线程可见
- 在派生类之间复制共享变量(浅副本就足够了)
- 为什么跨线程更改共享变量的代码显然没有受到竞争条件的影响
- 从多个线程C 更改共享变量
- 在不同类的对象之间共享变量 (C++)
- 管理多线程应用程序中的共享变量
- C 类共享变量
- 增强多线程和共享变量
- 共享变量和局部变量C++
- 对共享变量的无保护访问是否总是数据竞赛