Condividi tramite


Metodo condition_variable::wait_for

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

template<
   class Rep,
   class Period
>
cv_status wait_for(
   unique_lock<mutex>& Lck,
   const chrono::duration<Rep,
   Period>& Rel_time
);
template<
   class Rep,
   class Period,
   class Predicate
>
bool wait_for(
   unique_lock<mutex>& Lck,
   const chrono::duration<Rep,
   Period>& Rel_time,
   PredicatePred
);

Parametri

  • Lck
    Un oggetto unique_lock<mutex>.

  • 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 non 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

<condition_variable>