Partager via


fonction async

Représente un fournisseur asynchrone.

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);

Paramètres

Notes

Définitions des abréviations :

dfn

Le résultat de l'appel decay_copy(forward<Fn>(fn)).

dargs

Les résultats des appels decay_copy(forward<ArgsTypes>(args…)).

Ty

Le type result_of<Fn(ArgTypes…)>::type.

La première fonction de modèle retourne async(launch::any, fn, args…).

La deuxième fonction retourne un objet d' future<Ty> dont l'état asynchrone associé contient un résultat avec les valeurs d' dfn et d' dargs et un objet thread pour gérer un thread séparé d'exécution.

À moins qu' decay<Fn>::type soit un type autre que l'activation, la deuxième fonction ne participe pas à la résolution de surcharge.

Si policy est launch::any, la fonction peut choisir launch::async ou launch::deferred.Dans cette implémentation, la fonction utilise launch::async.

Si policy est launch::async, la fonction crée un thread qui a INVOKE(dfn, dargs..., Ty).La fonction retourne après la création du thread sans résultats en attente.Si le système ne peut pas démarrer un nouveau thread, la fonction lève system_error qui a un code d'erreur d' resource_unavailable_try_again.

Si policy est launch::deferred, la fonction jeton son état asynchrone associé comme maintenant une fonction différée et retourne.Le premier appel à une fonction non chronométrée qui attend que l'état associé asynchrone soit prête en effet appelle la fonction différée en évaluant INVOKE(dfn, dargs..., Ty).

Dans tous les cas, l'état asynchrone associé à l'objet d' future n'est pas configuré pour préparer jusqu'à ce que l'évaluation d' INVOKE(dfn, dargs…, Ty) se termine, en levant une exception ou en retournant normalement.Le résultat de l'état asynchrone associé est une exception s'il a été levée, ou toute valeur qui est retournée par l'évaluation.

La pseudo-fonction INVOKE est définie dans <functional>.

Configuration requise

Préanalyse d'En-tête :

L'espace de noms : DST

Voir aussi

Référence

<future>

result_of Class

future classe

Autres ressources

Fichiers d'en-tête