Condividi tramite


metodo condition_variable::wait_until

Blocca un thread e imposta un valore massimo in cui il thread sblocca.

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

Metodi che restituiscono un valore cv_status::timeout del tipo cv_status se l'attesa termina quando Abs_time trascorre.In caso contrario, i metodi cv_status::no_timeoutrestituita.

Metodi che restituiscono un valore bool il valore Pred.

Note

I primi blocchi di metodo all'oggetto condition_variable viene segnalato da una chiamata a notify_one o a notify_all o fino a Abs_time.Può inoltre svegliare spurio.

Il secondo metodo esegue effettivamente il codice seguente.

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

Il terzo e il quarto metodi 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 un segnale.

Requisiti

intestazione: condition_variable

Spazio dei nomi: deviazione standard

Vedere anche

Riferimenti

classe condition_variable

<condition_variable>