std::shared_future<T>::wait_until
| template< class Clock, class Duration > std::future_status wait_until( const std::chrono::time_point<Clock,Duration>& timeout_time ) const; |
(seit C++11) | |
wait_until wartet darauf, dass ein Ergebnis verfügbar wird. Es blockiert, bis die angegebene timeout_time erreicht wurde oder das Ergebnis verfügbar wird, je nachdem, was zuerst eintritt. Der Rückgabewert gibt an, warum wait_until zurückgekehrt ist.
Wenn das Future das Ergebnis eines Aufrufs von async ist, das eine verzögerte Auswertung verwendet hat, gibt diese Funktion sofort zurück, ohne zu warten.
Das Verhalten ist undefiniert, wenn valid() vor dem Aufruf dieser Funktion false ist, oder wenn Clock nicht die Clock-Anforderungen erfüllt. Das Programm ist schlecht geformt, wenn std::chrono::is_clock_v<Clock> false ist.(seit C++20)
Inhalt |
[bearbeiten] Parameter
| timeout_time | - | maximaler Zeitpunkt, bis zu dem blockiert werden soll |
[bearbeiten] Rückgabewert
| Konstante | Erklärung |
| future_status::deferred | Der gemeinsame Zustand enthält eine verzögerte Funktion, die eine verzögerte Auswertung verwendet, sodass das Ergebnis erst berechnet wird, wenn es explizit angefordert wird. |
| future_status::ready | Das Ergebnis ist verfügbar. |
| future_status::timeout | Der Timeout ist abgelaufen. |
[bearbeiten] Ausnahmen
Alle Ausnahmen, die von clock, time_point oder duration während der Ausführung ausgelöst werden (von der Standardbibliothek bereitgestellte Uhren, Zeitpunkte und Dauern lösen nie Ausnahmen aus).
[bearbeiten] Hinweise
Die Implementierungen werden ermutigt, den Fall zu erkennen, wenn valid() = false vor dem Aufruf ist und eine std::future_error mit der Fehlerbedingung future_errc::no_state auszulösen.
Der Standard empfiehlt, die mit timeout_time verknüpfte Uhr zur Zeitmessung zu verwenden; diese Uhr muss keine monotone Uhr sein. Es gibt keine Garantien bezüglich des Verhaltens dieser Funktion, wenn die Uhr diskontinuierlich angepasst wird, aber die bestehenden Implementierungen konvertieren timeout_time von Clock nach std::chrono::system_clock und delegieren an POSIX pthread_cond_timedwait, sodass das Warten Anpassungen der Systemuhr berücksichtigt, aber nicht die vom Benutzer bereitgestellte Clock. In jedem Fall kann die Funktion aufgrund von Planungs- oder Ressourcenkonfliktverzögerungen auch länger als bis nach Erreichen von timeout_time warten.
[bearbeiten] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Siehe auch
| wartet, bis das Ergebnis verfügbar ist (public member function) | |
| wartet auf das Ergebnis, gibt zurück, wenn es für die angegebene Zeitdauer nicht verfügbar ist (public member function) |