<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 shared_future
destruidores são necessários e 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 . |