std::this_thread:: sleep_until
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Определено в заголовочном файле
<thread>
|
||
|
template
<
class
Clock,
class
Duration
>
void sleep_until ( const std:: chrono :: time_point < Clock, Duration > & sleep_time ) ; |
(начиная с C++11) | |
Блокирует выполнение текущего потока до достижения указанного sleep_time .
Clock
должен удовлетворять требованиям
Clock
.
Программа является некорректной, если
std::
chrono
::
is_clock_v
<
Clock
>
равно
false
.
(начиная с C++20)
Стандарт рекомендует использовать часы, связанные с sleep_time , в этом случае корректировки часов могут учитываться. Таким образом, длительность блокировки может быть больше или меньше sleep_time - Clock :: now ( ) на момент вызова, в зависимости от направления корректировки и того, поддерживается ли она реализацией. Функция также может блокировать до момента после достижения sleep_time из-за задержек планирования процессов или конкуренции за ресурсы.
Содержание |
Параметры
| sleep_time | - | время блокировки до |
Возвращаемое значение
(нет)
Исключения
Любое исключение, выброшенное
Clock
или
Duration
(часы и длительности, предоставляемые стандартной библиотекой, никогда не выбрасывают исключения).
Пример
#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"; }
Возможный вывод:
Hello, waiter... Waited 2000.17 ms
Смотрите также
|
(C++11)
|
останавливает выполнение текущего потока на указанный промежуток времени
(функция) |
|
Документация C
для
thrd_sleep
|
|