Compartilhar via


Classe shared_future

Descreve um objeto de retorno assíncrono. Diferente de um objeto future, um provedor assíncrono pode ser associado a qualquer quantidade de objetos shared_future.

Sintaxe

template <class Ty>
class shared_future;

Comentários

Não chame nenhum método diferente de valid, operator= e o destruidor em um objeto shared_future que seja vazio.

Objetos shared_future não são sincronizados. Chamar métodos no mesmo objeto de vários threads gera uma corrida de dados com resultados imprevisíveis.

Membros

Construtores públicos

Nome Descrição
shared_future Constrói um objeto shared_future.

Métodos públicos

Nome Descrição
get Recupera o resultado armazenado no estado assíncrono associado.
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
shared_future::operator= Atribui um novo estado assíncrono associado.

Requisitos

Cabeçalho:<future>

Namespace: std

shared_future::get

Recupera o resultado armazenado no estado assíncrono associado.

const Ty& get() const;

Ty& get() const;

void get() const;

Comentários

Se o resultado for uma exceção, o método a gerará novamente. Caso contrário, o resultado será retornado.

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 shared_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 shared_future<void>, o método retorna void.

shared_future::operator=

Transfere o estado assíncrono associado de um objeto especificado.

shared_future& operator=(shared_future&& Right) noexcept;
shared_future& operator=(const shared_future& Right);

Parâmetros

Right
Um objeto shared_future.

Valor de retorno

*this

Comentários

Para o primeiro operador, Right não tem mais um estado assíncrono associado após a operação.

Para o segundo método, Right mantém seu estado assíncrono associado.

Construtor shared_future::shared_future

Constrói um objeto shared_future.

shared_future() noexcept;
shared_future(future<Ty>&& Right) noexcept;
shared_future(shared_future&& Right) noexcept;
shared_future(const shared_future& Right);

Parâmetros

Right
Um objeto future ou shared_future.

Comentários

O primeiro construtor cria um objeto shared_future que não tem nenhum estado assíncrono associado.

O segundo e o terceiro construtores criam um objeto shared_future e transferem o estado assíncrono associado de Right. Right não tem mais um estado assíncrono associado.

O quarto construtor cria um objeto shared_future que tem o mesmo estado assíncrono associado que Right.

shared_future::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.

shared_future::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.

shared_future::wait_for

Bloqueia o thread atual até que o estado assíncrono associado seja ready 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.

shared_future::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 chrono::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>