Compartilhar via


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.

Confira também

Referência de Arquivos de Cabeçalho