Sdílet prostřednictvím


condition_variable_any::wait_until – metoda

Blokuje vlákno a nastavuje maximální bod v čase, kdy se vlákno odblokuje.

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

Parametry

  • Lck
    Objekt mutex.

  • Abs_time
    Objekt chrono::time_point.

  • Pred
    Libovolný výraz, který vrací true nebo false.

Vrácená hodnota

Metody, které vracejí typ cv_status, vracejí cv_status::timeout, pokud čekání skončí, když uplyne Abs_time.V opačném případě vrátí metody cv_status::no_timeout.

Metody, které vracejí bool, vracejí hodnotu Pred.

Poznámky

První metoda blokuje, dokud není objekt condition_variable signalizován voláním notify_one nebo notify_all nebo do Abs_time.Může se také probudit falešně.

Druhá metoda ve skutečnosti spustí následující kód.

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

Třetí a čtvrtá metoda použije ukazatel na objekt typu xtime, aby nahradil objekt chrono::time_point.Objekt xtime určuje maximální dobu čekání na signál.

Požadavky

Záhlaví: condition_variable

Obor názvů: std

Viz také

Referenční dokumentace

condition_variable – třída

<condition_variable>