阻塞线程,并在线程解除阻塞后设置一个时间间隔。
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 消失时停止等待。 否则,该方法返回 cv_status::no_timeout。
第二个方法返回 Pred 值。
备注
第一个方法阻塞,直到 condition_variable_any 对象发出信号调用 notify_one 或 notify_all 或者时间间隔 Rel_time 消失。 它也可以不合逻辑地唤醒。
第二个方法实际执行以下代码。
while(!Pred())
if(wait_for(Lck, Rel_time) == cv_status::timeout)
return Pred();
return true;
要求
Header: condition_variable
命名空间: std