condition_variable_any::wait_for方法
阻止线程,并将时间间隔,隐藏线程解除。
template<
class Lock,
class Rep,
class Period
>
bool wait_for(
Lock& Lck,
const chrono::duration<Rep,
Period>& Rel_time
);
template<
class Lock,
class Rep,
class Period,
class Predicate
>
bool wait_for(
Lock& Lck,
const chrono::duration<Rep,
Period>& Rel_time,
Predicate Pred
);
参数
Lck
任何类型 mutex 对象。Rel_time
指定时间的 chrono::duration 对象,线程醒之前。Pred
返回 true 或 false的任何表达式。
返回值
第一种方法返回 cv_status::timeout,如果等待终止,当 Rel_time elapsed。 否则,该方法返回 cv_status::no_timeout。
第二种方法返回 Pred的值。
备注
第一个方法进行阻止,直到 condition_variable_any 对象由调用终止到 notify_one 或 notify_all,或在时间间隔 Rel_time elapsed。 它可以程序集可以直接醒。
第二个方法实际执行以下代码。
while(!Pred())
if(wait_for(Lck, Rel_time) == cv_status::timeout)
return Pred();
return true;
要求
condition_variable的标头:
命名空间: std