<condition_variable>
定义用于创建对象等待条件变为 true 选件类 condition_variable 和 condition_variable_any。
此标头使用并发运行时 (ConcRT),以便可以与其他 ConcRT framework 一起使用它。 有关 ConcRT 的更多信息,请参见 并发运行时。
#include <condition_variable>
备注
使用 /clr 或 /clr:pure,在生成的代码,则此标头块。
备注
代码等待情况变量也必须使用 mutex。 调用的线程必须锁定 mutex 中,然后调用等待情况变量的功能之前。 当调用函数返回时,mutex 然后被锁定。 当线程等待该条件变为 true 时,mutex 不锁定。 因此不能不可预知的结果,等待情况变量的每个线程都必须使用相同 mutex 对象。
类型 condition_variable_any 对象可用于任何类型 mutex。 使用 mutex 的类型不必提供 try_lock 方法。 类型 condition_variable 对象只能用于类型 **unique_lock<mutex>**mutex。 此类型对象与类型 **condition_variable_any<unique_lock<mutex>>**对象可以更快。
等待事件,第一个锁 mutex,然后调用一个在条件变量的 wait 方法。 wait 调用块直至其他线程信号情况变量。
"虚拟"唤醒 发生,当等待情况变量的线程已取消阻止,没有相应的通知。 若要识别此"虚拟"唤醒,等待条件变为 true 的代码应显式检查种情况下,当代码从等待函数时返回。 使用循环,这通常执行;可以使用 wait(unique_lock<mutex>& lock, Predicate pred) 为您执行此循环。
while (condition is false)
wait for condition variable;
condition_variable_any 和 condition_variable 类别每个具有挂起情况的三种方法。
wait 等待一个无限制的时间段。
直到指定的 time的wait_until 等待。
wait_for 等待指定的 time interval。
上述每种方法有两个重载版本。 一个等待并能抵御伪造地醒。 另一个采用定义谓词的其他模板参数。 方法不返回,直到谓词是 true。
每选件类还具有用于通知情况变量的两个方法其行为是 true。
notify_one 会唤醒等待情况变量的其中一个线程。
notify_all 会唤醒等待情况变量的所有线程。