condition_variable_any::wait_until方法
阻止线程,并将线程解除的最大时间点。
template<class Lock, class Clock, class Duration>
void wait_until(
Lock& Lck,
const chrono::time_point<Clock, Duration>& Abs_time);
template<class Lock, class Clock, class Duration, class Predicate>
void wait_until(
Lock& Lck,
const chrono::time_point<Clock, Duration>& Abs_time,
Predicate Pred);
template<class Lock>
void wait_until(
Lock Lck,
const xtime *Abs_time);
template<class Lock, class Predicate>
void wait_until(
Lock Lck,
const xtime *Abs_time,
Predicate Pred);
参数
Lck
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 对象指定最大时间等待信号。
要求
condition_variable的标头:
命名空间: std