Função Async
Representa um provedor assíncrono.
template<class Fn, class... ArgTypes>
future<typename result_of<Fn(ArgTypes...)>::type>;
async(Fn&& fn, ArgTypes&&... args);
template<class Fn, class... ArgTypes>
future<typename result_of<Fn(ArgTypes...)>::type>;
async(launch policy, Fn&& fn, ArgTypes&&... args);
Parâmetros
- policy
Um valor de inicialização .
Comentários
Definições das abreviações:
dfn |
O resultado de chamar decay_copy(forward<Fn>(fn)). |
dargs |
Os resultados das chamadas decay_copy(forward<ArgsTypes>(args…)). |
Ty |
O tipo result_of<Fn(ArgTypes…)>::type. |
A primeira função do modelo retorna async(launch::any, fn, args…).
A segunda função retorna um objeto de future<Ty> cujo estado assíncrono associado contém um resultado juntamente com os valores de dfn e de dargs e um objeto de segmento para gerenciar um segmento separado de execução.
A menos que decay<Fn>::type é um tipo diferente do lançamento, a segunda função não participa na resolução de sobrecarga.
Se policy é launch::any, a função pode escolher launch::async ou launch::deferred.Nessa implementação, a função usa launch::async.
Se policy é launch::async, a função cria um segmento que avalia INVOKE(dfn, dargs..., Ty).A função retorna após criar o segmento sem os resultados de espera.Se o sistema não pode iniciar um novo segmento, a função gera system_error que tem um código de erro de resource_unavailable_try_again.
Se policy é launch::deferred, a função marca seu estado assíncrono associado como mantendo uma função adiadas e retorna.A primeira chamada para qualquer função não agendada que aguardar o estado assíncrono associado pronto para ser aplicado chama a função adiada por INVOKE(dfn, dargs..., Ty)de avaliação.
Em todos os casos, o estado assíncrono associado do objeto de future não está definido para aprontar-se até que a avaliação de INVOKE(dfn, dargs…, Ty) ela lançando uma exceção, ou retornando normalmente.O resultado de estado assíncrono associado é uma exceção se um for lançada, ou qualquer valor que é retornado pela avaliação.
A pseudo--função INVOKE é definida em <functional>.
Requisitos
futuro deCabeçalho:
Namespace: STD