Compartir a través de


shared_future (Clase)

Describe un objeto de devolución asincrónico. Al contrario que un objeto future, un proveedor asincrónico se puede asociar a cualquier número de objetos shared_future.

Sintaxis

template <class Ty>
class shared_future;

Comentarios

No llame a ningún método distinto de valid, operator= y el destructor de un objeto shared_future que esté vacío.

shared_future Los objetos no se sincronizan. Llamar a métodos en el mismo objeto desde varios subprocesos, presenta una anticipación de datos que tiene resultados impredecibles.

Miembros

Constructores públicos

Nombre Descripción
shared_future Construye un objeto shared_future.

Métodos públicos

Nombre Descripción
get Recupera el resultado almacenado en el estado asincrónico asociado.
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
shared_future::operator= Asigna un nuevo estado asincrónico asociado.

Requisitos

Encabezado:<future>

Espacio de nombres: std

shared_future::get

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

const Ty& get() const;

Ty& get() const;

void get() const;

Comentarios

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

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 shared_future<Ty&>, el valor almacenado es realmente una referencia al objeto que se pasó al proveedor asincrónico como el valor devuelto.

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

shared_future::operator=

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

shared_future& operator=(shared_future&& Right) noexcept;
shared_future& operator=(const shared_future& Right);

Parámetros

Right
Un objeto shared_future.

Valor devuelto

*this

Comentarios

Para el primer operador, después de la operación, Right ya no tiene un estado asincrónico asociado.

Para el segundo método, Right mantiene su estado asincrónico asociado.

shared_future::shared_future (Constructor)

Construye un objeto shared_future.

shared_future() noexcept;
shared_future(future<Ty>&& Right) noexcept;
shared_future(shared_future&& Right) noexcept;
shared_future(const shared_future& Right);

Parámetros

Right
Un objeto future o shared_future.

Comentarios

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

El segundo y el tercer constructor crean un objeto shared_future y transfieren el estado asincrónico asociado de Right. Right ya no tiene un estado asincrónico asociado.

El cuarto constructor crea un objeto shared_future que tiene el mismo estado asincrónico asociado que Right.

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

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

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

shared_future::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 chrono::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>