|
|
Defined in header <thread> | ||
template<class Clock,class Duration> void sleep_until(conststd::chrono::time_point<Clock, Duration>& sleep_time); | (since C++11) | |
Blocks the execution of the current thread until specifiedsleep_time has been reached.
Clock
must meet theClock requirements. The program is ill-formed ifstd::chrono::is_clock_v<Clock> isfalse.(since C++20)
The standard recommends that the clock tied tosleep_time be used, in which case adjustments of the clock may be taken into account. Thus, the duration of the block might be more or less thansleep_time- Clock::now() at the time of the call, depending on the direction of the adjustment and whether it is honored by the implementation. The function also may block until aftersleep_time has been reached due to process scheduling or resource contention delays.
Contents |
sleep_time | - | time to block until |
(none)
Any exception thrown byClock
orDuration
(clocks and durations provided by the standard library never throw).
#include <chrono>#include <iostream>#include <thread> auto now(){returnstd::chrono::steady_clock::now();} auto awake_time(){using std::chrono::operator""ms;return now()+ 2000ms;} int main(){std::cout<<"Hello, waiter...\n"<<std::flush;constauto 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";}
Possible output:
Hello, waiter...Waited 2000.17 ms
(C++11) | stops the execution of the current thread for a specified time duration (function)[edit] |
C documentation forthrd_sleep |