Scroll to navigation

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