Maison > développement back-end > C++ > Comment puis-je coordonner et récupérer les résultats de plusieurs tâches asynchrones simultanées ?

Comment puis-je coordonner et récupérer les résultats de plusieurs tâches asynchrones simultanées ?

Barbara Streisand
Libérer: 2025-01-28 03:21:07
original
615 Les gens l'ont consulté

How Can I Coordinate and Retrieve Results from Multiple Concurrent Asynchronous Tasks?

Gestion efficace de plusieurs opérations asynchrones simultanées et leurs résultats

Ce guide montre comment exécuter simultanément plusieurs tâches asynchrones et récupérer leurs résultats individuels. Supposons que vous ayez trois opérations asynchrones indépendantes, chacune produisant un résultat unique. L'objectif est d'exécuter ces tâches simultanément et d'accéder à leurs résultats respectifs une fois tous terminés.

La méthode Task.WhenAll fournit une solution élégante. Cette méthode crée une seule tâche qui se termine uniquement lorsque toutes les tâches d'entrée sont terminées. Il renvoie ensuite un tableau contenant les résultats de chaque tâche.

Voici une implémentation pratique:

<code class="language-csharp">Task<string> catTask = FeedCatAsync();
Task<bool> houseTask = SellHouseAsync();
Task<int> carTask = BuyCarAsync();

await Task.WhenAll(catTask, houseTask, carTask);

string catResult = await catTask;
bool houseResult = await houseTask;
int carResult = await carTask;</code>
Copier après la connexion

Dans cet exemple, catTask, houseTask et carTask représentent vos opérations asynchrones. Task.WhenAll les initie simultanément. La ligne await Task.WhenAll(...) s'arrête à l'exécution jusqu'à ce que les trois tâches soient conclues.

Une fois terminé, vous pouvez accéder aux résultats individuels en attendant chaque tâche d'origine. Les résultats sont stockés dans catResult, houseResult et carResult, prêts pour un traitement ultérieur.

Il est crucial de se rappeler que les méthodes asynchrones, lors de l'invocation, renvoient immédiatement une tâche "chaude" - une tâche qui a déjà commencé. Par conséquent, vous devez utiliser await (comme indiqué ci-dessus) ou Task.Result pour obtenir les résultats réels. L'utilisation de await est généralement préférée pour sa clarté et ses capacités de gestion des exceptions.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal