Namespaces
Variants

std::shared_future<T>:: wait_until

From cppreference.net

Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
template < class Clock, class Duration >
std:: future_status wait_until ( const std:: chrono :: time_point < Clock,Duration > & timeout_time ) const ;
(desde C++11)

wait_until espera a que un resultado esté disponible. Se bloquea hasta que se alcanza el timeout_time especificado o el resultado está disponible, lo que ocurra primero. El valor de retorno indica por qué wait_until regresó.

Si el futuro es el resultado de una llamada a async que utilizó evaluación diferida, esta función retorna inmediatamente sin esperar.

El comportamiento es indefinido si valid() es false antes de la llamada a esta función, o si Clock no cumple con los requisitos de Clock . El programa está mal formado si std:: chrono :: is_clock_v < Clock > es false . (desde C++20)

Contenidos

Parámetros

timeout_time - punto de tiempo máximo hasta el cual bloquear

Valor de retorno

Constante Explicación
future_status::deferred El estado compartido contiene una función diferida que utiliza evaluación perezosa, por lo que el resultado se calculará solo cuando se solicite explícitamente
future_status::ready El resultado está listo
future_status::timeout El tiempo de espera ha expirado

Excepciones

Cualquier excepción lanzada por clock, time_point o duration durante la ejecución (los clocks, time points y durations proporcionados por la biblioteca estándar nunca lanzan excepciones).

Notas

Se recomienda a las implementaciones detectar el caso cuando valid ( ) == false antes de la llamada y lanzar una std::future_error con una condición de error de future_errc::no_state .

El estándar recomienda que se utilice el reloj vinculado a timeout_time para medir el tiempo; no se requiere que ese reloj sea un reloj monótono. No hay garantías respecto al comportamiento de esta función si el reloj se ajusta de manera discontinua, pero las implementaciones existentes convierten timeout_time de Clock a std::chrono::system_clock y delegan en POSIX pthread_cond_timedwait para que la espera respete los ajustes del reloj del sistema, pero no los del Clock proporcionado por el usuario. En cualquier caso, la función también puede esperar más allá de que se haya alcanzado timeout_time debido a demoras de planificación o contención de recursos.


Ejemplo

Véase también

espera a que el resultado esté disponible
(función miembro pública)
espera el resultado, retorna si no está disponible después de la duración de tiempo de espera especificada
(función miembro pública)