16.4 条件变量
2025年09月26日
16.4 条件变量
C++ STL提供了条件变量的支持。使用条件变量时,程序必须包含头文件<condition_variable>。该头文件主要包含了与条件变量相关的类和函数。相关的类包括condition_varia-ble和condition_variable_any,枚举类型cv_status以及notify_all_at_thread_exit()函数。
条件变量主要用于阻塞一个线程,直至被其他线程通知“条件满足或者到时了”。条件变量类condition_variable提供一种条件变量,该变量可以等待一个unique_lock<mutex>类的对象允许一些平台的最大效率。条件变量类condition_variable_any提供一种通用的条件变量(condition_variable)。该条件变量可以等待任意用户提供的锁类型。
条件变量允许并发式激活:wait、wait_for、wait_until、notify_one和notify_all等成员函数。notify_one和notify_all函数的执行应该是原子性的。wait()、wait_for()函数和wait_until()应该在以下3种情况下才被具体调用:
1)释放互斥量,转而进入等待状态。
2)非阻塞性的等待。
3)重新获取阻塞状态。