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
- policy
Une valeur d' lancement .
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