Condividi tramite


Metodo condition_variable::wait_until

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

template<
   class Clock,
   class Duration
>
cv_status wait_until(
   unique_lock<mutex>& Lck,
   const chrono::time_point<Clock,
   Duration>& Abs_time
);
template<
   class Clock,
   class Duration,
   class Predicate
>
bool wait_until(
   unique_lock<mutex>& Lck,
   const chrono::time_point<Clock,
   Duration>& Abs_time,
   Predicate Pred
);
cv_status wait_until(
   unique_lock<mutex>& Lck,
   const xtime *Abs_time
);
template<class Predicate>
bool wait_until(
   unique_lock<mutex>& Lck,
   const xtime *Abs_time,
   Predicate Pred
);

Parametri

  • Lck
    Un oggetto unique_lock<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 fino a 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>