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 的任何運算式。
傳回值
如果等候因 Abs_time 消失而結束,回傳 cv_status 型別的方法會回傳 cv_status::timeout。 否則,方法會傳回 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