前面提到了线程,那么肯定就要说到条件变量。
条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待
条件变量的条件成立而挂起;另一个线程使条件成立(给出条件成立信号)。为了防止竞争,条件变
量的使用总是和一个互斥量结合在一起。
头文件<condition_variable>
-
condition_variable
-
condition_variable_any
相同点:两者都能与std::mutex一起使用。
不同点:前者仅限于与 std::mutex 一起工作,而后者可以和任何满足最低标准的互斥量一
起工作,从而加上了_any的后缀。condition_variable_any会产生额外的开销。
一般只推荐使用condition_variable。除非对灵活性有硬性要求,才会考虑condition_variable_any。
条件变量的构造函数:
std::condition_variable::condition_variable
constructor:
condition_variable(); //默认构造函数无参
condition_variable(const condition_variable&) = delete; //删除拷贝构造函数
条件变量的wait函数:
void wait( std::unique_lock<std::mutex>& lock );
//Predicate是lambda表达式。
template< class Predicate >
void wait( std::unique_lock<std::mute