C++11条件变量condition_variable
一、前言
互斥量是多线程间同时访问某一共享变量时,保证变量可被安全访问的手段。但单靠互斥量无法实现线 程的同步。线程同步是指线程间需要按照预定的先后次序顺序进行的行为。C++11对这种行为也提供了 有力的支持,这就是条件变量。条件变量位于头文件#include <condition_variable>
下。【官方说明文档】。
条件变量使用过程:
- 拥有条件变量的线程获取互斥量。
- 循环检查某个条件,如果条件不满足则阻塞直到条件满足;如果条件满足则向下执行。
- 某个线程满足条件执行完之后调用notify_one或notify_all唤醒一个或者所有等待线程。
二、成员函数
条件变量提供了两类操作:wait和notify。这两类操作构成了多线程同步的基础。
2.1、wait函数
函数原型:
void wait (