Espacios de nombres
Variantes
Acciones

std::this_thread::sleep_until

De cppreference.com
< cpp‎ | thread
 
 
Biblioteca de apoyo de concurrencia
Hilos
(C++11)
(C++20)
Espacio de nombres this_thread
(C++11)
(C++11)
(C++11)
sleep_until
(C++11)
Cancelación cooperativa
Exclusión mutua
(C++11)
Gestión genérica de bloqueo
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Variables de condición
(C++11)
Semáforos
Pestillos y barreras
(C++20)
(C++20)
Futuros
(C++11)
(C++11)
(C++11)
(C++11)
Recuperación segura
(C++26)
Punteros de riesgo
Tipos atómicos
(C++11)
(C++20)
Inicialización de tipos atómicos
(C++11)(en desuso en C++20)
(C++11)(en desuso en C++20)
Orden de memoria
Funciones independientes para operaciones atómicas
Funciones independientes para indicadores atómicos
 
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) [editar]
Documentación de C para thrd_sleep