命名空间
变体
操作

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)
危险指针
原子类型
(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。它不是 可复制构造可移动构造可复制赋值,或 可移动赋值 的。

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

目录

[编辑] 成员函数

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

[编辑] 注意

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

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

[编辑] 另请参见

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

[编辑] 外部链接

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