Compartir a través de


promise (Clase)

Describe un proveedor asincrónico.

Sintaxis

template <class Ty>
class promise;

Miembros

Constructores públicos

Nombre Descripción
promise Construye un objeto promise.

Métodos públicos

Nombre Descripción
get_future Devuelve un objeto future asociado a este compromiso.
set_exception Establece de forma atómica el resultado de este compromiso para indicar una excepción.
set_exception_at_thread_exit Establece de forma atómica el resultado de este compromiso para indicar una excepción y entrega la notificación solo después de que se hayan destruido todos los objetos del subproceso local del subproceso actual (normalmente al salir del subproceso).
set_value Establece de forma atómica el resultado de este compromiso para indicar un valor.
set_value_at_thread_exit Establece de forma atómica el resultado de este compromiso para indicar un valor y entrega la notificación solo después de que se hayan destruido todos los objetos del subproceso local del subproceso actual (normalmente al salir del subproceso).
swap Intercambia el estado asincrónico asociado de este compromiso con el de un objeto promise especificado.

Operadores públicos

Nombre Descripción
promise::operator= Asignación del estado compartido de este objeto promise.

Jerarquía de herencia

promise

Requisitos

Encabezado:<future>

Espacio de nombres: std

promise::get_future

Devuelve un objeto future que tiene el mismo estado asincrónico asociado que este objeto promise.

future<Ty> get_future();

Comentarios

Si el objeto promise está vacío, este método produce un future_error que tiene un error_code de no_state.

Si ya se ha llamado a este método para un objeto promise que tiene el mismo estado asincrónico asociado, el método produce un future_error que tiene un error_code de future_already_retrieved.

promise::operator=

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

promise& operator=(promise&& Other) noexcept;

Parámetros

Otros
Un objeto promise.

Valor devuelto

*this

Comentarios

Este operador transfiere el estado asincrónico asociado de Other. Después de la transferencia, Other está vacío.

promise::promise (Constructor)

Construye un objeto promise.

promise();
template <class Alloc>
promise(allocator_arg_t, const Alloc& Al);
promise(promise&& Other) noexcept;

Parámetros

Al
Asignador de memoria. Para obtener más información sobre los asignadores, vea <Asignadores>.

Otros
Un objeto promise.

Comentarios

El primer constructor construye un objeto vacíopromise.

El segundo constructor crea un objeto promise vacío y usa Al para la asignación de memoria.

El tercer constructor crea un objeto promise, transfiere el estado asincrónico asociado de Other y deja Other vacío.

promise::set_exception

Almacena de forma atómica una excepción como resultado de este objeto promise y establece el estado asincrónico asociado en listo.

void set_exception(exception_ptr Exc);

Parámetros

Exc
exception_ptr que este método almacena como el resultado de la excepción.

Comentarios

Si el objeto promise no tiene ningún estado asincrónico asociado, este método produce un future_error que tiene un código de error de no_state.

Si ya se ha llamado a set_exception, set_exception_at_thread_exit, set_value o set_value_at_thread_exit para un objeto promise que tiene el mismo estado asincrónico asociado, este método produce un future_error que tiene un código de error de promise_already_satisfied.

Como resultado de este método, se desbloquean todos los subprocesos bloqueados en el estado asincrónico asociado.

promise::set_exception_at_thread_exit

Establece de forma atómica el resultado de este promise para indicar una excepción, entregando la notificación solo después de que se hayan destruido todos los objetos del subproceso local del subproceso actual (normalmente al salir del subproceso).

void set_exception_at_thread_exit(exception_ptr Exc);

Parámetros

Exc
exception_ptr que este método almacena como el resultado de la excepción.

Comentarios

Si el objeto promise no tiene ningún estado asincrónico asociado, este método produce un future_error que tiene un código de error de no_state.

Si ya se ha llamado a set_exception, set_exception_at_thread_exit, set_value o set_value_at_thread_exit para un objeto promise que tiene el mismo estado asincrónico asociado, este método produce un future_error que tiene un código de error de promise_already_satisfied.

A diferencia de set_exception, este método no establece el estado asincrónico asociado en listo hasta que no se han destruido todos los objetos locales de subprocesos del subproceso actual. Normalmente, los subprocesos que están bloqueados en el estado asincrónico asociado no se desbloquean hasta que no se sale del subproceso actual.

promise::set_value

Almacena de forma atómica un valor como resultado de este objeto promise y establece el estado asincrónico asociado en listo.

void promise::set_value(const Ty& Val);
void promise::set_value(Ty&& Val);
void promise<Ty&>::set_value(Ty& Val);
void promise<void>::set_value();

Parámetros

Val
Valor que se va a almacenar como resultado.

Comentarios

Si el objeto promise no tiene ningún estado asincrónico asociado, este método produce un future_error que tiene un código de error de no_state.

Si ya se ha llamado a set_exception, set_exception_at_thread_exit, set_value o set_value_at_thread_exit para un objeto promise que tiene el mismo estado asincrónico asociado, este método produce un future_error que tiene un código de error de promise_already_satisfied.

Como resultado de este método, se desbloquean todos los subprocesos bloqueados en el estado asincrónico asociado.

El primer método también genera cualquier excepción que se produce cuando se copia Val en el estado asincrónico asociado. En esta situación, el estado asincrónico asociado no se establece en ready.

El segundo método también genera cualquier excepción que se produce cuando se mueve Val en el estado asincrónico asociado. En esta situación, el estado asincrónico asociado no se establece en ready.

Para la especialización parcial promise<Ty&>, el valor almacenado es una referencia a Val.

Para la especialización promise<void>, no existe ningún valor almacenado.

promise::set_value_at_thread_exit

Almacena de forma atómica un valor como resultado de este objeto promise.

void promise::set_value_at_thread_exit(const Ty& Val);
void promise::set_value_at_thread_exit(Ty&& Val);
void promise<Ty&>::set_value_at_thread_exit(Ty& Val);
void promise<void>::set_value_at_thread_exit();

Parámetros

Val
Valor que se va a almacenar como resultado.

Comentarios

Si el objeto promise no tiene ningún estado asincrónico asociado, este método produce un future_error que tiene un código de error de no_state.

Si ya se ha llamado a set_exception, set_exception_at_thread_exit, set_value o set_value_at_thread_exit para un objeto promise que tiene el mismo estado asincrónico asociado, este método produce un future_error que tiene un código de error de promise_already_satisfied.

A diferencia de set_value, el estado asincrónico asociado no se establece hasta que no se han destruido todos los objetos de subproceso local del subproceso actual. Normalmente, los subprocesos que están bloqueados en el estado asincrónico asociado no se desbloquean hasta que no se sale del subproceso actual.

El primer método también genera cualquier excepción que se produce cuando se copia Val en el estado asincrónico asociado.

El segundo método también genera cualquier excepción que se produce cuando se mueve Val en el estado asincrónico asociado.

Para la especialización parcial promise<Ty&>, el valor almacenado es una referencia a Val.

Para la especialización promise<void>, no existe ningún valor almacenado.

promise::swap

Intercambia el estado asincrónico asociado de este objeto promise por el de un objeto especificado.

void swap(promise& Other) noexcept;

Parámetros

Otros
Un objeto promise.

Consulte también

Referencia de archivos de encabezado