Maison > développement back-end > C++ > Comment puis-je attendre efficacement plusieurs tâches asynchrones avec divers types de résultats ?

Comment puis-je attendre efficacement plusieurs tâches asynchrones avec divers types de résultats ?

Susan Sarandon
Libérer: 2025-01-28 03:16:08
original
150 Les gens l'ont consulté

Gestion efficace de plusieurs tâches asynchrones avec des types de retour variés

Dans la programmation asynchrone, il est fréquent de nécessiter les résultats de plusieurs tâches en cours d'exécution simultanément, chacune renvoyant potentiellement un type de données différent. Illustrons avec trois exemples de tâches:

  • feedcat (): Renvoie un objet Cat.
  • sellhouse (): renvoie un objet House.
  • BuyCar (): Renvoie un objet Tesla.

Nous avons besoin de tous les résultats avant de continuer. Bien que l'exécution séquentielle soit possible, l'exécution simultanée est beaucoup plus efficace. Le défi consiste à gérer les divers types de résultats.

Solution: levier Task.WhenAll et les attentes individuels

La solution implique Task.WhenAll, qui attend que toutes les tâches fournies se terminent. Une fois terminé, récupérez les résultats individuels en utilisant await:

<code class="language-csharp">var catTask = FeedCat();
var houseTask = SellHouse();
var carTask = BuyCar();

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

var cat = await catTask;
var house = await houseTask;
var car = await carTask;</code>
Copier après la connexion

Task.WhenAll crée une tâche parent qui ne se termine que lorsque toutes les tâches enfants (catTask, houseTask, carTask) sont terminées. Par la suite, l'attente de chaque tâche d'enfant récupère individuellement son résultat spécifique.

How Can I Efficiently Await Multiple Asynchronous Tasks with Diverse Result Types?

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