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

傳回 boolPred傳回值的方法。

備註

condition_variable 物件的第一個方法區塊是由呼叫的方式來表示。 notify_onenotify_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

請參閱

參考

condition_variable 類別

<condition_variable>