Classe promise
Descreve um provedor assíncrono.
Sintaxe
template <class Ty>
class promise;
Membros
Construtores públicos
Nome | Descrição |
---|---|
promise | Constrói um objeto promise . |
Métodos públicos
Nome | Descrição |
---|---|
get_future | Retorna um future associado a essa promessa. |
set_exception | Define atomicamente o resultado dessa promessa para indicar uma exceção. |
set_exception_at_thread_exit | Define o resultado desta promessa atomicamente para indicar uma exceção e entrega a notificação somente depois que todos os objetos thread-local no thread atual forem destruídos (normalmente na saída do thread). |
set_value | Define atomicamente o resultado dessa promessa para indicar um valor. |
set_value_at_thread_exit | Define o resultado desta promessa atomicamente para indicar um valor e entrega a notificação somente depois que todos os objetos thread-local no thread atual forem destruídos (normalmente na saída do thread). |
troca | Troca o estado assíncrono associado desta promessa por um de um objeto de promessa especificado. |
Operadores públicos
Nome | Descrição |
---|---|
promise::operator= | Atribuição do estado compartilhado desse objeto de promessa. |
Hierarquia de herança
promise
Requisitos
Cabeçalho:<future>
Namespace: std
promise::get_future
Retorna um objeto future que tem o mesmo estado assíncrono associado que esta promessa.
future<Ty> get_future();
Comentários
Se o objeto de promessa estiver vazio, esse método gera um future_error que tem um error_code de no_state
.
Se esse método já foi chamado para um objeto de promessa que tem o mesmo estado assíncrono associado, o método gerará um future_error
que tem um error_code
de future_already_retrieved
.
promise::operator=
Transfere o estado assíncrono associado de um objeto promise
especificado.
promise& operator=(promise&& Other) noexcept;
Parâmetros
Outras
Um objeto promise
.
Valor de retorno
*this
Comentários
Esse operador transfere o estado assíncrono associado de Other. Após a transferência, Other estará empty.
Construtor promise::promise
Constrói um objeto promise
.
promise();
template <class Alloc>
promise(allocator_arg_t, const Alloc& Al);
promise(promise&& Other) noexcept;
Parâmetros
Al
Um alocador de memória. Para obter mais informações sobre alocadores, confira <alocadores>.
Outras
Um objeto promise
.
Comentários
O primeiro construtor constrói um objeto vaziopromise
.
O segundo construtor cria um objeto promise
vazio e usa IA para alocação de memória.
O terceiro construtor cria um objeto promise
e transfere o estado assíncrono associado de Other e deixa Other vazio.
promise::set_exception
Armazena atomicamente uma exceção como resultado desse objeto promise
e define o estado assíncrono associado como ready.
void set_exception(exception_ptr Exc);
Parâmetros
Exc
Um exception_ptr que é armazenado por esse método como o resultado da exceção.
Comentários
Se o objeto promise
não tiver nenhum estado assíncrono associado, esse método gerará um future_error com código de erro no_state
.
Se set_exception
, set_exception_at_thread_exit, set_value ou set_value_at_thread_exit já tiver sido chamado para um objeto promise
que tem o mesmo estado assíncrono associado, esse método gera um future_error
com código de erro promise_already_satisfied
.
Como resultado desse método, os threads bloqueados no estado assíncrono associado são desbloqueados.
promise::set_exception_at_thread_exit
Define o resultado desse promise
atomicamente para indicar uma exceção, entregando a notificação somente depois que todos os objetos thread-local no thread atual forem destruídos (normalmente na saída do thread).
void set_exception_at_thread_exit(exception_ptr Exc);
Parâmetros
Exc
Um exception_ptr que é armazenado por esse método como o resultado da exceção.
Comentários
Se o objeto de promessa não tiver nenhum estado assíncrono associado, esse método gera um future_error com um código de erro no_state
.
Se set_exception, set_exception_at_thread_exit
, set_value ou set_value_at_thread_exit já tiver sido chamado para um objeto promise
que tem o mesmo estado assíncrono associado, esse método gera um future_error
com código de erro promise_already_satisfied
.
Ao contrário de set_exception, esse método não define o estado assíncrono associado como pronto até que todos os objetos thread-local no thread atual tenham sido destruídos. Normalmente, threads bloqueados no estado assíncrono associado não são desbloqueados até que o thread atual seja encerrado.
promise::set_value
Armazena atomicamente um valor como o resultado desse objeto promise
e define o estado assíncrono associado como ready.
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
O valor a ser armazenado como o resultado.
Comentários
Se o objeto promise
não tiver nenhum estado assíncrono associado, esse método gerará um future_error com código de erro no_state
.
Se set_exception, set_exception_at_thread_exit, set_value
ou set_value_at_thread_exit já tiver sido chamado para um objeto promise
que tem o mesmo estado assíncrono associado, esse método gera um future_error
com código de erro promise_already_satisfied
.
Como resultado desse método, os threads bloqueados no estado assíncrono associado são desbloqueados.
O primeiro método também gera qualquer exceção que é gerada quando Val é copiado para o estado assíncrono associado. Nessa situação, o estado assíncrono associado não está definido como pronto.
O segundo método também gera qualquer exceção que é gerada quando Val é movido para o estado assíncrono associado. Nessa situação, o estado assíncrono associado não está definido como pronto.
Para a especialização parcial promise<Ty&>
, o valor armazenado em vigor é uma referência a Val.
Para a especialização promise<void>
, não existe nenhum valor armazenado.
promise::set_value_at_thread_exit
Armazena atomicamente um valor como o resultado deste 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
O valor a ser armazenado como o resultado.
Comentários
Se o objeto de promessa não tiver nenhum estado assíncrono associado, esse método gera um future_error com um código de erro no_state
.
Se set_exception, set_exception_at_thread_exit, set_value ou set_value_at_thread_exit
já tiver sido chamado para um objeto promise
que tem o mesmo estado assíncrono associado, esse método gera um future_error
com código de erro promise_already_satisfied
.
Ao contrário de set_value
, o estado assíncrono associado não é definido como pronto até que todos os objetos thread-local no thread atual tenham sido destruídos. Normalmente, threads bloqueados no estado assíncrono associado não são desbloqueados até que o thread atual seja encerrado.
O primeiro método também gera qualquer exceção que é gerada quando Val é copiado para o estado assíncrono associado.
O segundo método também gera qualquer exceção que é gerada quando Val é movido para o estado assíncrono associado.
Para a especialização parcial promise<Ty&>
, o valor armazenado é efetivamente uma referência a Val.
Para a especialização promise<void>
, não existe nenhum valor armazenado.
promise::swap
Troca o estado assíncrono associado deste objeto de promessa por um de um objeto de promessa especificado.
void swap(promise& Other) noexcept;
Parâmetros
Outras
Um objeto promise
.