<condition_variable >
头文件主要包含有类和函数相关的条件变量。
包括相关类 std::condition_variable
和 std::condition_variable_any
,还有枚举类型std::cv_status
。另外还包含函数 std::notify_all_at_thread_exit()
,以下分别介绍一下以上几种类型。
std::condition_variable 类介绍
std::condition_variable
是条件变量,很多其它有关条件变量的定义參考维基百科。Linux
下使用 Pthread
库中的 pthread_cond_*()
函数提供了与条件变量相关的功能, Windows
则參考 MSDN
。
当 std::condition_variable
对象的某个wait
函数被调用的时候,它使用 std::unique_lock
(通过 std::mutex
) 来锁住当前线程。
当前线程会一直被堵塞。直到另外一个线程在同样的 std::condition_variable
对象上调用了 notification
函数来唤醒当前线程。
std::condition_variable
对象通常使用 std::unique_lock<std::mutex>
来等待,假设须要使用另外的 lockable
类型,能够使用std::condition_variable_any
类。本文后面会讲到 std::condition_variable_any
的使用方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
|
结果:
1 2 3 4 5 6 7 8 9 10 11 |
|
std::condition_variable
的拷贝构造函数被禁用,仅仅提供了默认构造函数。
看看 std::condition_variable
的各个成员函数
std::condition_variable::wait()
介绍:
std::condition_variable
提供了两种 wait()
函数。
1 2 3 4 |
|