Freigeben über


condition_variable_any::wait_until-Methode

Blockiert einen Thread und legt einen maximalen Zeitpunkt fest, an dem die Blockierung des Threads aufgehoben wird.

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

Parameter

  • Lck
    Ein Mutex-Objekt.

  • Abs_time
    Ein chrono::time_point-Objekt.

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

Rückgabewert

Methoden, die eine cv_status-Typ zurückgeben, geben cv_status::timeout zurück, wenn der Wartevorgang beendet wird, sobald Abs_time verstrichen ist. Andernfalls geben diese Methoden cv_status::no_timeout zurück.

Methoden, die bool zurückgeben, geben den Wert von Pred zurück.

Hinweise

Die erste Methode blockiert, bis das condition_variable-Objekt von einen Aufruf von notify_one oder notify_all signalisiert wurde, oder bis Abs_time. Sie kann auch falsch aktiviert werden.

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

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

Bei der dritten und vierten Methode wird einen Zeiger auf ein Objekt des Typs xtime, verwendet, um das chrono::time_point-Objekt zu ersetzen. Mit dem xtime-Objekt wird die maximale Zeit angegeben, die auf ein Signal gewartet wird.

Anforderungen

Header: condition_variable

Namespace: std

Siehe auch

Referenz

condition_variable-Klasse

<condition_variable>