std::this_thread:: sleep_until
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definido en el encabezado
<thread>
|
||
|
template
<
class
Clock,
class
Duration
>
void sleep_until ( const std:: chrono :: time_point < Clock, Duration > & sleep_time ) ; |
(desde C++11) | |
Bloquea la ejecución del hilo actual hasta que se alcance el tiempo de espera especificado sleep_time .
Clock
debe cumplir con los
Clock
requisitos.
El programa está mal formado si
std::
chrono
::
is_clock_v
<
Clock
>
es
false
.
(desde C++20)
La norma recomienda que se utilice el reloj vinculado a sleep_time , en cuyo caso se pueden tomar en cuenta los ajustes del reloj. Por lo tanto, la duración del bloqueo podría ser mayor o menor que sleep_time - Clock :: now ( ) en el momento de la llamada, dependiendo de la dirección del ajuste y de si es respetado por la implementación. La función también puede bloquearse hasta después de que se haya alcanzado sleep_time debido a demoras en la planificación de procesos o contención de recursos.
Contenidos |
Parámetros
| sleep_time | - | tiempo para bloquear hasta |
Valor de retorno
(ninguno)
Excepciones
Cualquier excepción lanzada por
Clock
o
Duration
(los relojes y duraciones proporcionados por la biblioteca estándar nunca lanzan excepciones).
Ejemplo
#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"; }
Salida posible:
Hello, waiter... Waited 2000.17 ms
Véase también
|
(C++11)
|
detiene la ejecución del hilo actual durante un período de tiempo especificado
(función) |
|
Documentación C
para
thrd_sleep
|
|