Namespaces
Variants

std:: condition_variable_any

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
condition_variable_any
(C++11)
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
定义于头文件 <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 属于 标准布局类型 。它不满足 可复制构造 可移动构造 可复制赋值 可移动赋值 的要求。

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

目录

成员函数

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

注释

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

std::condition_variable_any 的一个潜在用途是配合自定义的 Lockable 类型实现可中断等待:自定义的锁定操作会按预期锁定关联的互斥锁,同时完成必要设置,以便在接收到中断信号时通知此条件变量。 [1]

参见

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

外部链接

  1. Anthony Williams (2012年第一版/ 2019年第二版),《C++ Concurrency in Action》,9.2.4节“中断 std::condition_variable_any 的等待”。