Partager via


<future>

Incluez l’en-tête <standard pour> définir des modèles de classe et des modèles de prise en charge qui simplifient l’exécution d’une fonction, éventuellement dans un thread distinct, et la récupération de son résultat. Le résultat est la valeur retournée par la fonction ou une exception émise par la fonction, mais qui n’est pas interceptée dans la fonction.

Cet en-tête utilise le runtime d’accès concurrentiel (ConcRT) pour pouvoir l’utiliser avec d’autres mécanismes ConcRT. Pour plus d’informations sur ConcRT, consultez Runtime d’accès concurrentiel.

Syntaxe

#include <future>

Notes

Remarque

Dans le code compilé à l’aide de /clr, cet en-tête est bloqué.

Un fournisseur asynchrone stocke le résultat d’un appel de fonction. Un objet de retour asynchrone est utilisé pour récupérer le résultat d’un appel de fonction. Un état asynchrone associé permet la communication entre un fournisseur asynchrone et un ou plusieurs objets de retour asynchrones.

Un programme ne crée pas directement les objets d’état asynchrone associé. Le programme crée un fournisseur asynchrone chaque fois qu’il en a besoin, puis il crée un objet de retour asynchrone qui partage son état asynchrone associé avec le fournisseur. Les fournisseurs asynchrones et les objets de retour asynchrones gèrent les objets qui contiennent leur état asynchrone associé partagé. Quand le dernier objet qui référence l’état asynchrone associé le libère, l’objet qui contient l’état asynchrone associé est détruit.

Un fournisseur asynchrone ou un objet de retour asynchrone qui n’a aucun état asynchrone associé est vide.

Un état asynchrone associé est prêt uniquement si son fournisseur asynchrone a stocké une valeur de retour ou une exception.

La fonction async de modèle et les modèles promise de classe et packaged_task sont des fournisseurs asynchrones. Les modèles future de classe et shared_future décrivent les objets de retour asynchrones.

Chacun des modèles promisede classe , futureet shared_future a une spécialisation pour le type void et une spécialisation partielle pour le stockage et la récupération d’une valeur par référence. Ces spécialisations diffèrent du modèle principal uniquement dans les signatures et la sémantique des fonctions qui stockent et récupèrent la valeur retournée.

Les modèles future de classe et shared_future ne bloquent jamais dans leurs destructeurs, sauf dans un cas qui est conservé pour la compatibilité descendante : Contrairement à tous les autres futurs, pour un future— ou le dernier shared_future— qui est attaché à une tâche démarrée avec std::async, le destructeur bloque si la tâche n’est pas terminée ; autrement dit, il bloque si ce thread n’a pas encore appelé .get() ou .wait() si la tâche est toujours en cours d’exécution. La note d’utilisation suivante a été ajoutée à la description du std::async projet de norme : « [Remarque : Si un futur obtenu à partir de std ::async est déplacé en dehors de l’étendue locale, un autre code qui utilise l’avenir doit être conscient que le destructeur de l’avenir peut bloquer le blocage de l’état partagé pour que l’état partagé devienne prêt.—note de fin] » Dans tous les autres cas, future et shared_future les destructeurs sont requis et sont garantis de ne jamais bloquer.

Membres

Classes

Nom Description
future, classe Décrit un objet de retour asynchrone.
future_error, classe Décrit un objet d’exception qui peut être levé par des méthodes dont les types gèrent les objets future.
packaged_task, classe Décrit un fournisseur asynchrone qui est un wrapper d’appel dont la signature d’appel est Ty(ArgTypes...). Son état asynchrone associé contient une copie de l’objet pouvant être appelé, ainsi que le résultat potentiel.
promise, classe Décrit un fournisseur asynchrone.
shared_future, classe Décrit un objet de retour asynchrone. Contrairement à un objet future, un fournisseur asynchrone peut être associé à un nombre quelconque d’objets shared_future.

Structures

Nom Description
is_error_code_enum, structure Spécialisation qui indique que future_errc est adapté au stockage d’un error_code.
uses_allocator, structure Spécialisation qui contient toujours la valeur true.

Functions

Nom Description
async Représente un fournisseur asynchrone.
future_category Retourne une référence à l’objet error_category qui caractérise les erreurs associées aux objets future.
make_error_code Crée un error_code dont l’objet error_category caractérise les erreurs de future.
make_error_condition Crée un error_condition dont l’objet error_category caractérise les erreurs de future.
swap Échange l’état asynchrone associé d’un objet promise avec celui d’un autre.

Énumérations

Nom Description
future_errc Fournit des noms symboliques pour toutes les erreurs signalées par la classe future_error.
future_status Fournit les noms symboliques pour les raisons qu’une fonction d’attente chronométrée peut retourner.
lancer Représente un type de masque de bits qui décrit les modes possibles pour la fonction de modèle async.

Voir aussi

Informations de référence sur les fichiers d’en-tête