命名空间
变体
操作

std::condition_variable_any

来自 cppreference.com
< 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)
危险指针
原子类型
(C++11)
(C++20)
原子类型的初始化
(C++11)(C++20 中已弃用)
(C++11)(C++20 中已弃用)
内存排序
原子操作的自由函数
原子标志的自由函数
 
 
在头文件 <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++ 并发编程实战”,9.2.4 “中断对 std::condition_variable_any 的等待”。