Sdílet prostřednictvím


condition_variable_any::wait_for – metoda

Blokuje vlákno a nastavuje časový interval, po kterém se vlákno odblokuje.

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

Parametry

  • Lck
    Objekt mutex libovolného typu.

  • Rel_time
    Objekt chrono::duration, který určuje dobu před probuzením podprocesu.

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

Vrácená hodnota

První metoda vrátí cv_status::timeout, pokud čekání skončí, když uplyne Rel_time.V opačném případě vrátí metody cv_status::no_timeout.

Druhá metoda vrací hodnotu Pred.

Poznámky

První metoda blokuje, dokud objekt condition_variable_any není signalizován voláním notify_one nebo notify_all nebo dokud neuběhl časový interval Rel_time.Může se také probudit falešně.

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

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

Požadavky

Záhlaví: condition_variable

Obor názvů: std

Viz také

Referenční dokumentace

condition_variable_any – třída

<condition_variable>