std::this_thread::sleep_until - cppreference.com
De cppreference.com
| Definido en el archivo de encabezado |
||
|
|
(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.
Parámetros
| sleep_time | - | Tiempo hasta el cual bloquearse. |
Valor de retorno
(Ninguno)
Excepciones
Cualquier excepción lanzada por Clock o Duration (los relojes, puntos de tiempo y duraciones proporcionados por la biblioteca estándar nunca lanzan).
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