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.