Namensräume
Varianten
Aktionen

std::this_thread::sleep_until

Von cppreference.com
< cpp‎ | thread
 
 
Bibliothek für nebenläufige Programmierung
Threads
(C++11)
(C++20)
this_thread Namespace
(C++11)
(C++11)
(C++11)
sleep_until
(C++11)
Kooperatives Beenden
Gegenseitiger Ausschluss
(C++11)
Allgemeines Sperrungsmanagement
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Bedingungsvariablen
(C++11)
Semaphoren
Latches und Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
(C++11)
Sichere Wiederherstellung
(C++26)
Hazard Pointer
Atomare Typen
(C++11)
(C++20)
Initialisierung von atomaren Typen
(C++11)(veraltet in C++20)
(C++11)(veraltet in C++20)
Speicherordnung
(C++11)(deprecated in C++26)
Freie Funktionen für atomare Operationen
Freie Funktionen für atomare Flags
 
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) [bearbeiten]
C-Dokumentation für thrd_sleep