Partilhar via


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.

Confira também

Referência de Arquivos de Cabeçalho
<future>