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
.