std::this_thread:: sleep_until
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definiert im 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 die angegebene sleep_time erreicht wurde.
Clock
muss die
Clock
Anforderungen erfüllen.
Das Programm ist fehlerhaft, wenn
std::
chrono
::
is_clock_v
<
Clock
>
false
ist.
(seit C++20)
Die Norm empfiehlt, dass die an sleep_time gebundene Uhr verwendet wird, wobei Anpassungen der Uhr berücksichtigt werden können. Daher könnte die Dauer des Blocks kürzer oder länger sein als sleep_time - Clock :: now ( ) zum Zeitpunkt des Aufrufs, abhängig von der Richtung der Anpassung und ob diese von der Implementierung berücksichtigt wird. Die Funktion kann auch blockieren, bis sleep_time erreicht wurde, aufgrund von Prozessplanung oder Ressourcenkonflikten.
Inhaltsverzeichnis |
Parameter
| sleep_time | - | Zeit bis zur Blockierung |
Rückgabewert
(keine)
Ausnahmen
Jede Ausnahme, die von
Clock
oder
Duration
geworfen wird
(von der Standardbibliothek bereitgestellte Uhren und Zeitdauern werfen niemals Ausnahmen).
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
Siehe auch
|
(C++11)
|
stoppt die Ausführung des aktuellen Threads für eine bestimmte Zeitdauer
(Funktion) |
|
C-Dokumentation
für
thrd_sleep
|
|