Partilhar via


<future>

Inclua o cabeçalho padrão <future> para definir modelos de classes e suporte que simplificam a execução de uma função — possivelmente em um thread separado — e a recuperação de seu resultado. O resultado é o valor retornado pela função ou uma exceção que é emitida pela função, mas não é capturada na função.

Esse cabeçalho usa ConcRT (Runtime de Simultaneidade) para que você possa usá-lo juntamente com outros mecanismos ConcRT. Para obter mais informações sobre o ConcRT, consulte Runtime de simultaneidade.

Sintaxe

#include <future>

Comentários

Observação

No código compilado usando /clr, esse cabeçalho é bloqueado.

Um provedor assíncrono armazena o resultado de uma chamada de função. Um objeto de retorno assíncrono é usado para recuperar o resultado de uma chamada de função. Um estado assíncrono associado fornece comunicação entre um provedor assíncrono e um ou mais objetos de retorno assíncronos.

Um programa não cria diretamente nenhum objetos de estado assíncrono associado. O programa cria um provedor assíncrono sempre que precisa de um e, por meio dele, cria um objeto de retorno assíncrono que compartilha seu estado assíncrono associado com o provedor. Provedores assíncronos e objetos de retorno assíncronos gerenciam os objetos que mantêm seu estado assíncrono associado compartilhado. Quando o último objeto que faz referência ao estado assíncrono associado o libera, o objeto que contém o estado assíncrono associado é destruído.

Um provedor assíncrono ou um objeto de retorno assíncrono sem nenhum estado assíncrono associado fica vazio.

Um estado assíncrono associado ficará pronto somente se seu provedor assíncrono tiver armazenado um valor retornado ou armazenado uma exceção.

A função de modelo async e os modelos de classe promise e packaged_task são provedores assíncronos. Os modelos de classe future e shared_future descrevem objetos de retorno assíncronos.

Cada um desses modelos de classe promise, future e shared_future tem uma especialização para o tipo void e uma especialização parcial para armazenar e recuperar um valor por referência. Essas especializações diferem do modelo primário somente quanto às assinaturas e à semântica das funções que armazenam e recuperam o valor retornado.

Os modelos de classe future e shared_future nunca bloqueiam seus destruidores, exceto em um caso que é preservado para compatibilidade com versões anteriores: diferente de todos os outros futures, para um future — ou para o último shared_future — anexado a uma tarefa iniciada com std::async, o destruidor é bloqueado se a tarefa não tiver sido concluída, ou seja, ele é bloqueado se o thread ainda não tiver chamado .get() ou .wait() e a tarefa ainda estiver em execução. A seguinte nota de usabilidade foi adicionada à descrição do rascunho do padrão: "[Nota: Se um futuro obtido de std::async for movido para fora do escopo local, outro código que usa o futuro deve estar ciente de std::async que o destruidor do futuro pode bloquear para que o estado compartilhado fique pronto.—nota final]" Em todos os outros casos, future e os destruidores são necessários e shared_future têm a garantia de nunca bloquear.

Membros

Classes

Nome Descrição
Classe future Descreve um objeto de retorno assíncrono.
Classe future_error Descreve um objeto de exceção que pode ser gerado por métodos de tipos que gerenciam objetos future.
Classe packaged_task Descreve um provedor assíncrono que é um wrapper de chamada e cuja assinatura de chamada é Ty(ArgTypes...). O estado assíncrono associado mantém uma cópia de seu objeto que pode ser chamado, bem como o possível resultado.
Classe promise Descreve um provedor assíncrono.
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.

Estruturas

Nome Descrição
Estrutura is_error_code_enum Especialização que indica que future_errc é adequado para armazenar um error_code.
Estrutura uses_allocator Especialização que sempre se aplica.

Funções

Nome Descrição
async Representa um provedor assíncrono.
future_category Retorna uma referência ao objeto error_category que caracteriza erros associados a objetos future.
make_error_code Cria um error_code que tem o objeto error_category que caracteriza erros future.
make_error_condition Cria um error_condition que tem o objeto error_category que caracteriza erros future.
troca Troca o estado assíncrono associado de um objeto promise pelo de outro objeto.

Enumerações

Nome Descrição
future_errc Fornece nomes simbólicos para os erros relatados pela classe future_error.
future_status Fornece nomes simbólicos para os motivos que uma função de espera temporizada pode retornar.
launch Representa um tipo de bitmask que descreve os modos possíveis para a função de modelo async.

Confira também

Referência de Arquivos de Cabeçalho