Compartir vía


Clase future

Describe un objeto de devolución asincrónico.

Sintaxis

template <class Ty>
class future;

Comentarios

Cada proveedor asincrónico estándar devuelve un objeto cuyo tipo es una creación de instancia de esta plantilla. Un objeto future proporciona el único acceso al proveedor asincrónico con el que está asociado. Si necesita varios objetos de devolución asincrónicos que están asociados con el mismo proveedor asincrónico, copie el objeto future en un objeto shared_future.

Miembros

Constructores públicos

Nombre Descripción
future Construye un objeto future.

Métodos públicos

Nombre Descripción
get Recupera el resultado almacenado en el estado asincrónico asociado.
share Convierte el objeto en un shared_future.
valid Especifica si el objeto no está vacío.
wait Bloquea el subproceso actual hasta que el estado asincrónico asociado esté listo.
wait_for Se bloquea hasta que el estado asincrónico asociado está listo, o bien hasta que el tiempo especificado haya transcurrido.
wait_until Se bloquea hasta que el estado asincrónico asociado está listo o hasta un punto determinado en el tiempo.

Operadores públicos

Nombre Descripción
future::operator= Transfiere el estado asincrónico asociado de un objeto especificado.

Requisitos

Encabezado: <future>

Espacio de nombres: std

Constructores

Construye un objeto future.

future() noexcept;
future(future&& Other) noexcept;

Parámetros

Other
Un objeto future.

Comentarios

El primer constructor crea un objeto future que no tiene ningún estado asincrónico asociado.

El segundo constructor crea un objeto future y transfiere el estado asincrónico asociado de Other. Other ya no tiene un estado asincrónico asociado.

get

Recupera el resultado almacenado en el estado asincrónico asociado.

Ty get();

Valor devuelto

Si el resultado es una excepción, el método la reinicia. De lo contrario, se devuelve el resultado.

Comentarios

Antes de recuperar el resultado, este método bloquea el subproceso actual hasta que el estado asincrónico asociado esté listo.

Para la especialización parcial future<Ty&>, el valor almacenado es realmente una referencia al objeto que se ha pasado al proveedor asincrónico como el valor devuelto.

Dado que no existe ningún valor almacenado para la especialización future<void>, el método devuelve void.

En otras especializaciones, el método mueve su valor devuelto del valor almacenado. Por tanto, llame a este método solo una vez.

operator=

Transfiere un estado asincrónico asociado de un objeto especificado.

future& operator=(future&& Right) noexcept;

Parámetros

Right
Un objeto future.

Valor devuelto

*this

Comentarios

Después de la transferencia, Right ya no tiene un estado asincrónico asociado.

share

Convierte el objeto en un objeto shared_future.

shared_future<Ty> share();

Valor devuelto

shared_future(move(*this))

valid

Especifica si el objeto tiene un estado asincrónico asociado.

bool valid() noexcept;

Valor devuelto

Es true si el objeto tiene un estado asincrónico asociado; de lo contrario, es false.

wait

Bloquea el subproceso actual hasta que el estado asincrónico asociado esté listo.

void wait() const;

Comentarios

Un estado asincrónico asociado está listo solo si su proveedor asincrónico ha almacenado un valor devuelto o ha almacenado una excepción.

wait_for

Bloquea el subproceso actual hasta que el estado asincrónico asociado esté listo o hasta que haya transcurrido un tiempo especificado.

template <class Rep, class Period>
future_status wait_for(const chrono::duration<Rep, Period>& Rel_time) const;

Parámetros

Rel_time
Un objeto chrono::duration que especifica un intervalo de tiempo máximo que el subproceso bloquea.

Valor devuelto

Un future_status que indica el motivo que se va a devolver.

Comentarios

Un estado asincrónico asociado está listo solo si su proveedor asincrónico ha almacenado un valor devuelto o ha almacenado una excepción.

wait_until

Bloquea el subproceso actual hasta que el estado asincrónico asociado esté listo o hasta después de un punto de tiempo especificado.

template <class Clock, class Duration>
future_status wait_until(const chrono::time_point<Clock, Duration>& Abs_time) const;

Parámetros

Abs_time
Un objeto time_point que especifica un tiempo después del cual se puede desbloquear el subproceso.

Valor devuelto

Un future_status que indica el motivo que se va a devolver.

Comentarios

Un estado asincrónico asociado está listo solo si su proveedor asincrónico ha almacenado un valor devuelto o ha almacenado una excepción.

Consulte también

Referencia de archivos de encabezado
<future>