Condividi tramite


Metodo condition_variable_any::wait_until

Blocca la thread, ed imposta un tempo massimo al quale la thread si sbloccherà.

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);

Parametri

  • Lck
    Un oggetto mutex.

  • Abs_time
    Un oggetto chrono::time_point.

  • Pred
    Qualsiasi espressione che restituisca true o false.

Valore restituito

I metodi che restituiscono un tipo cv_status::timeout, restituiscono cv_status se l'attesa termina quando è trascorso Abs_time. In caso contrario, il metodo restituisce cv_status::no_timeout.

I metodi che restituiscono un valore bool restituiscono il valore di Pred.

Note

Il primo metodo si blocca finché l'oggetto condition_variable non riceve un segnale da una chiamata a notify_one o a notify_all, o finché Abs_time. Si può inoltre attivare in modo illegittimo.

In effetti il secondo metodo esegue il codice seguente.

while(!Pred())
   if(wait_until(Lck, Abs_time) == cv_status::timeout)
      return Pred();
return true;

Il terzo e il quarto metodo utilizzano un puntatore a un oggetto di tipo xtime per sostituire l'oggetto chrono::time_point. L'oggetto xtime specifica il tempo massimo di attesa per un segnale.

Requisiti

Intestazione: condition_variable

Spazio dei nomi: std

Vedere anche

Riferimenti

Classe condition_variable

<condition_variable>