std::this_thread::sleep_until
| Definiert in Header <thread> |
||
| template< class Clock, class Duration > void sleep_until( const std::chrono::time_point<Clock, Duration>& sleep_time ); |
(seit C++11) | |
Blockiert die Ausführung des aktuellen Threads, bis der angegebene sleep_time erreicht ist.
Clock muss die Clock-Anforderungen erfüllen. Das Programm ist ill-formed, wenn std::chrono::is_clock_v<Clock> false ist.(seit C++20)
Es wird empfohlen, die Uhr zu verwenden, die mit sleep_time verknüpft ist. In diesem Fall können Anpassungen der Uhr berücksichtigt werden. Die Dauer der Blockierung kann daher mehr oder weniger als sleep_time - Clock::now() zum Zeitpunkt des Aufrufs betragen, abhängig von der Richtung der Anpassung und ob sie von der Implementierung honoriert wird. Die Funktion kann aufgrund von Prozessplanung oder Ressourcenkonflikten auch nach Erreichen von sleep_time blockieren.
Inhalt |
[bearbeiten] Parameter
| sleep_time | - | bis zu der blockiert werden soll |
[bearbeiten] Rückgabewert
(keine)
[bearbeiten] Ausnahmen
Alle Ausnahmen, die von Clock oder Duration geworfen werden (von der Standardbibliothek bereitgestellte Uhren und Dauern werfen nie Ausnahmen).
[bearbeiten] Beispiel
#include <chrono> #include <iostream> #include <thread> auto now() { return std::chrono::steady_clock::now(); } auto awake_time() { using std::chrono::operator""ms; return now() + 2000ms; } int main() { std::cout << "Hello, waiter...\n" << std::flush; const auto start{now()}; std::this_thread::sleep_until(awake_time()); std::chrono::duration<double, std::milli> elapsed{now() - start}; std::cout << "Waited " << elapsed.count() << " ms\n"; }
Mögliche Ausgabe
Hello, waiter... Waited 2000.17 ms
[bearbeiten] Siehe auch
| (C++11) |
stoppt die Ausführung des aktuellen Threads für eine angegebene Zeitdauer (Funktion) |
| C-Dokumentation für thrd_sleep
| |