table of contents
std::this_thread::sleep_until(3) | C++ Standard Libary | std::this_thread::sleep_until(3) |
NAME¶
std::this_thread::sleep_until - std::this_thread::sleep_until
Synopsis¶
Defined in header <thread>
template< class Clock, class Duration >
void sleep_until( const std::chrono::time_point<Clock, Duration>&
(since C++11)
sleep_time );
Blocks the execution of the current thread until specified sleep_time has
been
reached.
Clock must meet the Clock requirements.
The program is ill-formed if std::chrono::is_clock_v<Clock> is false.
(since C++20)
The standard recommends that the clock tied to sleep_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 than sleep_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 after sleep_time has been
reached
due to process scheduling or resource contention delays.
Parameters¶
sleep_time - time to block until
Return value¶
(none)
Exceptions¶
Any exception thrown by Clock or Duration (clocks and durations
provided by the
standard library never throw).
Example¶
// Run this code
#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";
}
Possible output:¶
Hello, waiter...
Waited 2000.17 ms
See also¶
sleep_for stops the execution of the current thread for a
specified time duration
(C++11) (function)
C documentation for
thrd_sleep
2024.06.10 | http://cppreference.com |