condition_variable_any::wait_for 方法

封鎖執行緒,並設定間隔之後,便會將執行緒解除封鎖。

template<
   class Lock,
   class Rep,
   class Period
>
bool wait_for(
   Lock& Lck,
   const chrono::duration<Rep,
   Period>& Rel_time
);
template<
   class Lock,
   class Rep,
   class Period,
   class Predicate
>
bool wait_for(
   Lock& Lck,
   const chrono::duration<Rep,
   Period>& Rel_time,
   Predicate Pred
);

參數

  • Lck
    任何型別 mutex 物件。

  • Rel_time
    指定時間的 chrono::duration 物件,在執行緒喚醒之前。

  • Pred
    傳回 true 或 false的運算式。

傳回值

第一個方法會傳回 cv_status::timeout ,如果等候結束時, Rel_time 耗用的時間。 否則,方法會傳回 cv_status::no_timeout

第二個方法會傳回 Pred的值。

備註

condition_variable_any 物件的第一個方法區塊是由 notify_onenotify_all的呼叫發出信號為止,或直到間隔 Rel_time 耗用的時間。 它可以偽造維持喚醒。

第二個方法實際執行下列程式碼。

while(!Pred())
   if(wait_for(Lck, Rel_time) == cv_status::timeout)
      return Pred();
return true;

需求

condition_variable 的標題:

命名空間: std

請參閱

參考

condition_variable_any 類別

<condition_variable>