std::this_thread::sleep_until
Definido en el archivo de 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 alcanze el tiempo sleep_time
especificado.
Clock
debe cumplir con los requerimientos de Clock. El programa está mal formado si std::chrono::is_clock_v<Clock> es false (desde C++20).
El estándar recomienda que se utilice el reloj vinculado a sleep_time
, en cuyo caso se pueden tener en cuenta los ajustes del reloj. Por lo tanto, la duración del bloqueo puede ser menor o mayor que sleep_time - Clock::now() en el momento de la llamada, pero podría no serlo, dependiendo de la dirección del ajuste y si es respetado por la implementación. La función también puede bloquearse por más tiempo que hasta después de que se haya alcanzado sleep_time
debido a demoras en la programación o en la contención de recursos.
Contenido |
[editar] Parámetros
sleep_time | - | Tiempo hasta el cual bloquearse. |
[editar] Valor de retorno
(Ninguno)
[editar] Excepciones
Cualquier excepción lanzada por Clock
o Duration
(los relojes, puntos de tiempo y duraciones proporcionados por la biblioteca estándar nunca lanzan).
[editar] Ejemplo
#include <iostream> #include <chrono> #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 << "Hola, esperador...\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 << "Esperó " << elapsed.count() << " ms\n"; }
Salida:
Hola, esperador... Esperó 2000.17 ms
[editar] Véase también
(C++11) |
Detiene la ejecución del hilo/subproceso actual por una duración de tiempo especificada. (función) |
Documentación de C para thrd_sleep
|