std::condition_variable_any

定义于头文件 <condition_variable>
class condition_variable_any;
(C++11 起)

condition_variable_any 类是 std::condition_variable 的泛化。相对于只在 std::unique_lock<std::mutex> 上工作的 std::condition_variablecondition_variable_any 能在任何满足基础可锁 (BasicLockable) 要求的锁上工作。

条件变量语义描述见 std::condition_variable

std::condition_variable_any 是标准布局类。它不可复制构造、移动构造、复制赋值或移动赋值。

若锁是 std::unique_lock ,则 std::condition_variable 可能提供更好的性能。

目录

成员函数

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

注意

std::condition_variable_any 能与 std::shared_lock 一同使用,以在 std::shared_mutex 上以共享所有权模式等待。

std::condition_variable_any 与定制可锁 (Lockable) 类型的一种可行使用是提供便利的可中断等待:定制所操作将按期待锁定关联互斥,并在收到中断信号时进行必要的设置,以通知此条件变量。[1]

引用

  1. A. Williams (2012), "C++ concurrency in action" 9.2.4 Interupting a wait on std::condition_variable_any

版本历史

  • (当前 | 先前 2017年8月27日 (日) 22:41Fruderica讨论 | 贡献 . . (2,228字节) (0). . (撤销)
  • 当前 | 先前 2017年8月27日 (日) 22:37Fruderica讨论 | 贡献. . (2,228字节) (-1,357). . (撤销)
  • 当前 | 先前 2013年7月2日 (二) 11:30P12bot讨论 | 贡献 . . (3,585字节) (-125). . (Use {{lc}}. Update links. Various fixes.) (撤销)
  • 当前 | 先前 2012年11月2日 (五) 20:20P12bot讨论 | 贡献 . . (3,710字节) (+329). . (r2.7.3) (机器人添加:de, en, es, fr, it, ja, pt, ru) (撤销)
  • 当前 | 先前 2012年10月26日 (五) 03:08P12讨论 | 贡献 . . (3,381字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前) 2012年10月25日 (四) 12:00TranslationBot讨论 | 贡献. . (3,381字节) (+3,381). . (Translated from the English version using Google Translate)