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.