Condividi tramite


Metodo condition_variable_any::wait_for

Blocca un thread e imposta un intervallo di tempo dopo il quale il thread si sblocca.

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

Parametri

  • Lck
    Un oggetto mutex di qualunque tipo.

  • Rel_time
    Un oggetto chrono::duration che specifica la quantità di tempo prima che il thread si attivi.

  • Pred
    Qualsiasi espressione che restituisca true o false.

Valore restituito

Il primo metodo restituisce cv_status::timeout se l'attesa termina quando Rel_time è trascorso. In caso contrario, il metodo restituisce cv_status::no_timeout.

Il secondo metodo restituisce il valore di Pred.

Note

Il primo metodo si blocca finché l'oggetto condition_variable_any viene segnalato da una chiamata a notify_one o notify_all, o finché l'intervallo di tempo Rel_time non è trascorso. Si può inoltre attivare in modo illegittimo.

In effetti il secondo metodo esegue il codice seguente.

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

Requisiti

Intestazione: condition_variable

Spazio dei nomi: std

Vedere anche

Riferimenti

Classe condition_variable_any

<condition_variable>