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.