Freigeben über


condition_variable_any::wait_for-Methode

Blockiert einen Thread und legt ein Zeitintervall fest, nachdem die Blockierung des Threads aufgehoben wird.

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

Parameter

  • Lck
    Ein mutex-Objekt jeglichen Typs.

  • Rel_time
    Ein chrono::duration-Objekt, das die Zeitdauer vor der Aktivierung des Threads angibt.

  • Pred
    Jeder gültige Ausdruck, der true oder false zurückgibt.

Rückgabewert

Die erste Methode gibt cv_status::timeout zurück, wenn der Wartevorgang beendet wird, sobald Rel_time verstrichen ist. Andernfalls gibt diese Methode cv_status::no_timeout zurück.

Die zweite Methode gibt den Wert von Pred zurück.

Hinweise

Die erste Methode blockiert bis dem condition_variable_any-Objekt von einen Aufruf von notify_one oder notify_all signalisiert wird, oder bis das Zeitintervall Rel_time abgelaufen ist. Sie kann auch falsch aktiviert werden.

Die zweite Methode führt tatsächlich den folgenden Code aus.

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

Anforderungen

Header: condition_variable

Namespace: std

Siehe auch

Referenz

condition_variable_any-Klasse

<condition_variable>