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.
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
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
| |