阻塞线程,并在线程解除阻塞后设置一个时间间隔。
template<
class Rep,
class Period
>
cv_status wait_for(
unique_lock<mutex>& Lck,
const chrono::duration<Rep,
Period>& Rel_time
);
template<
class Rep,
class Period,
class Predicate
>
bool wait_for(
unique_lock<mutex>& Lck,
const chrono::duration<Rep,
Period>& Rel_time,
PredicatePred
);
参数
Lck
unique_lock<mutex> 对象。Rel_time
在线程唤醒前指定时间的 chrono::duration 对象。Pred
返回 true 或 false的任何表达式。
返回值
第一种方法返回 cv_status::timeout,如果当 Rel_time 消失时停止等待。 否则,该方法返回 cv_status::no_timeout。
第二个方法返回 Pred 值。
备注
第一个方法阻塞,直到 condition_variable 对象发出信号调用 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