阻止线程,并设置线程解除的最大时间点。
template<
class Clock,
class Duration
>
cv_status wait_until(
unique_lock<mutex>& Lck,
const chrono::time_point<Clock,
Duration>& Abs_time
);
template<
class Clock,
class Duration,
class Predicate
>
bool wait_until(
unique_lock<mutex>& Lck,
const chrono::time_point<Clock,
Duration>& Abs_time,
Predicate Pred
);
cv_status wait_until(
unique_lock<mutex>& Lck,
const xtime *Abs_time
);
template<class Predicate>
bool wait_until(
unique_lock<mutex>& Lck,
const xtime *Abs_time,
Predicate Pred
);
参数
Lck
unique_lock<mutex> 对象。Abs_time
chrono::time_point 对象。Pred
返回 true 或 false的任何表达式。
返回值
返回 cv_status 类型的方法返回 cv_status::timeout,如果当 Abs_time 时停止等待。 否则,该方法返回 cv_status::no_timeout。
返回 bool 的方法返回 Pred的值。
备注
第一个方法阻塞,直到 condition_variable 对象通过 notify_one调用有发出信号 或 notify_all,或 Abs_time。 它也可以不合逻辑地唤醒。
第二个方法实际执行以下代码。
while(!Pred())
if(wait_until(Lck, Abs_time) == cv_status::timeout)
return Pred();
return true;
第三个和第四个方法使用的指针类型 xtime 对象替换 chrono::time_point 对象。 xtime 对象指定最大数量时等待信号。
要求
Header: condition_variable
命名空间: std