Classe future
Descreve um objeto de retorno assíncrono.
Sintaxe
template <class Ty>
class future;
Comentários
Cada provedor assíncrono padrão retorna um objeto cujo tipo é uma instanciação desse modelo. Um objeto future
fornece o único acesso ao provedor assíncrono ao qual está associado. Se precisar de vários objetos de retorno assíncronos associados ao mesmo provedor assíncrono, copie o objeto future
para um objeto shared_future
.
Membros
Construtores públicos
Nome | Descrição |
---|---|
future |
Constrói um objeto future . |
Métodos públicos
Nome | Descrição |
---|---|
get |
Recupera o resultado armazenado no estado assíncrono associado. |
share |
Converte o objeto em um shared_future . |
valid |
Especifica se o objeto não está vazio. |
wait |
Bloqueia o thread atual até que o estado assíncrono associado esteja pronto. |
wait_for |
Bloqueia até que o estado assíncrono associado esteja pronto ou até que o tempo especificado tenha decorrido. |
wait_until |
Bloqueia até que o estado assíncrono associado esteja pronto ou até um ponto no tempo especificado. |
Operadores públicos
Nome | Descrição |
---|---|
future::operator= |
Transfere o estado assíncrono associado de um objeto especificado. |
Requisitos
Cabeçalho: <future>
Namespace: std
Construtores
Constrói um objeto future
.
future() noexcept;
future(future&& Other) noexcept;
Parâmetros
Other
Um objeto future
.
Comentários
O primeiro construtor cria um objeto future
que não tem nenhum estado assíncrono associado.
O segundo construtor cria um objeto future
e transfere o estado assíncrono associado de Other. Other não tem mais um estado assíncrono associado.
get
Recupera o resultado armazenado no estado assíncrono associado.
Ty get();
Valor de retorno
Se o resultado for uma exceção, o método a gerará novamente. Caso contrário, o resultado será retornado.
Comentários
Antes de recuperar o resultado, este método bloqueia o thread atual até que o estado assíncrono associado esteja pronto.
Para a especialização parcial future<Ty&>
, o valor armazenado será efetivamente uma referência ao objeto que foi passado para o provedor assíncrono como o valor retornado.
Como não existe nenhum valor armazenado para a especialização future<void>
, o método retorna void
.
Em outras especializações, o método move seu valor retornado do valor armazenado. Portanto, chame este método apenas uma vez.
operator=
Transfere o estado assíncrono associado de um objeto especificado.
future& operator=(future&& Right) noexcept;
Parâmetros
Right
Um objeto future
.
Valor de retorno
*this
Comentários
Após a transferência, Right não tem mais um estado assíncrono associado.
share
Converte o objeto em um objeto shared_future
.
shared_future<Ty> share();
Valor de retorno
shared_future(move(*this))
valid
Especifica se o objeto tem um estado assíncrono associado.
bool valid() noexcept;
Valor de retorno
true
se o objeto tiver um estado assíncrono associado; caso contrário, false
.
wait
Bloqueia o thread atual até que o estado assíncrono associado esteja pronto.
void wait() const;
Comentários
Um estado assíncrono associado ficará pronto somente se seu provedor assíncrono tiver armazenado um valor retornado ou armazenado uma exceção.
wait_for
Bloqueia o thread atual até que o estado assíncrono associado esteja pronto ou até que o intervalo de tempo especificado tenha decorrido.
template <class Rep, class Period>
future_status wait_for(const chrono::duration<Rep, Period>& Rel_time) const;
Parâmetros
Rel_time
Um objeto chrono::duration
que especifica um intervalo de tempo máximo durante o qual o thread fica bloqueado.
Valor de retorno
Um future_status
que indica o motivo do retorno.
Comentários
Um estado assíncrono associado ficará pronto somente se seu provedor assíncrono tiver armazenado um valor retornado ou armazenado uma exceção.
wait_until
Bloqueia o thread atual até que o estado assíncrono associado esteja pronto ou após um determinado ponto no tempo.
template <class Clock, class Duration>
future_status wait_until(const chrono::time_point<Clock, Duration>& Abs_time) const;
Parâmetros
Abs_time
Um objeto time_point
que especifica um tempo após o qual o thread pode ser desbloqueado.
Valor de retorno
Um future_status
que indica o motivo do retorno.
Comentários
Um estado assíncrono associado ficará pronto somente se seu provedor assíncrono tiver armazenado um valor retornado ou armazenado uma exceção.