命名空间
变体
操作

std::condition_variable_any

来自 cppreference.cn
< cpp‎ | thread
 
 
并发支持库
线程
(C++11)
(C++20)
this_thread 命名空间
(C++11)
(C++11)
(C++11)
协同取消
互斥
(C++11)
通用锁管理
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
条件变量
condition_variable_any
(C++11)
(C++11)
信号量
闩锁和栅栏
(C++20)
(C++20)
期物
(C++11)
(C++11)
(C++11)
(C++11)
安全回收
(C++26)
Hazard 指针
原子类型
(C++11)
(C++20)
原子类型的初始化
(C++11)(C++20 中已弃用)
(C++11)(C++20 中已弃用)
内存顺序
(C++11)(C++26 中已弃用)
原子操作的自由函数
原子标志的自由函数
 
 
定义于头文件 <condition_variable>
class condition_variable_any;
(自 C++11 起)

condition_variable_any 类是 std::condition_variable 的泛化版本。 std::condition_variable 仅适用于 std::unique_lock<std::mutex>,而 condition_variable_any 可以操作任何满足 BasicLockable 要求的锁。

有关条件变量的语义描述,请参阅 std::condition_variable

std::condition_variable_any 类是 StandardLayoutType。它不是 CopyConstructibleMoveConstructibleCopyAssignableMoveAssignable

如果锁是 std::unique_lock<std::mutex>,则 std::condition_variable 可能会提供更好的性能。

内容

[编辑] 成员函数

构造对象
(公共成员函数) [编辑]
析构对象
(公共成员函数) [编辑]
operator=
[已删除]
不可复制赋值
(公共成员函数) [编辑]
通知
通知一个等待线程
(公共成员函数) [编辑]
通知所有等待线程
(公共成员函数) [编辑]
等待
阻塞当前线程,直到条件变量被唤醒
(公共成员函数) [编辑]
阻塞当前线程,直到条件变量被唤醒或超过指定的超时时长
(公共成员函数) [编辑]
阻塞当前线程,直到条件变量被唤醒或到达指定的时间点
(公共成员函数) [编辑]

[编辑] 注解

std::condition_variable_any 可以与 std::shared_lock 一起使用,以便在共享所有权模式下等待 std::shared_mutex

std::condition_variable_any 与自定义 Lockable 类型的一种可能用途是提供便捷的可中断等待:自定义锁操作既可以按预期锁定关联的互斥锁,也可以执行必要的设置,以便在收到中断信号时通知此条件变量。[1]

[编辑] 参见

提供与 std::unique_lock 关联的条件变量
(类) [编辑]

[编辑] 外部链接

  1. Anthony Williams (2012, 第 1 版/ 2019, 第 2 版), “C++ Concurrency in Action”, 9.2.4 “中断 std::condition_variable_any 上的等待”。