condition_variable::wait_until-Methode

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

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

Parameter

  • Lck
    Ein unique_lock<mutex>-Objekt.

  • Abs_time
    Ein chrono::time_point-Objekt.

  • Pred
    Ein beliebiger Ausdruck, der true oder false zurückgibt.

Rückgabewert

Methoden, die eine cv_status-Typrückgabe cv_status::timeout zurückgeben, wenn dabei endet, wenn Abs_time ab.Andernfalls geben die Methoden cv_status::no_timeout zurück.

Methoden, die eine bool Rückgabe der Wert von Pred zurückgeben.

Hinweise

Die ersten Methodenblöcke bis das condition_variable-Objekt wird durch einen Aufruf notify_one oder zu notify_all oder bis Abs_time signalisiert.Er kann auch unecht aufwachen.

Die zweite Methode führt für den folgenden Code aus.

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

Im dritten und vierten Methoden verwenden einen Zeiger auf ein Objekt des Typs xtime, um das chrono::time_point-Objekt zu ersetzen.Das Objekt xtime gibt die maximale Dauer auf, um ein Signal zu warten.

Anforderungen

Header: condition_variable

Namespace: std

Siehe auch

Referenz

condition_variable Klasse

<condition_variable>