Maison >développement back-end >C++ >Comment puis-je exécuter et récupérer efficacement les résultats de plusieurs tâches asynchrones avec différents types de retour ?

Comment puis-je exécuter et récupérer efficacement les résultats de plusieurs tâches asynchrones avec différents types de retour ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-28 03:26:08458parcourir

How Can I Efficiently Execute and Retrieve Results from Multiple Asynchronous Tasks with Different Return Types?

Gestion des opérations asynchrones simultanées avec des types de retour variés

Cet exemple montre comment exécuter simultanément plusieurs tâches asynchrones, chacune renvoyant un type de résultat différent, et récupérer efficacement ces résultats. Imaginez trois fonctions asynchrones :

<code class="language-csharp">public class AsyncOperations {

    private async Task<Cat> FeedCatAsync() { ... }
    private async Task<House> SellHouseAsync() { ... }
    private async Task<Tesla> BuyCarAsync() { ... }

}</code>

Nous utiliserons Task.WhenAll pour les exécuter simultanément et collecter les résultats.

<code class="language-csharp">// Instantiate the class containing asynchronous methods
var operations = new AsyncOperations();

// Initiate the tasks
var catTask = operations.FeedCatAsync();
var houseTask = operations.SellHouseAsync();
var carTask = operations.BuyCarAsync();

// Execute concurrently and wait for completion
await Task.WhenAll(catTask, houseTask, carTask);

// Retrieve results
var cat = await catTask;
var house = await houseTask;
var car = await carTask;

// Process the results...</code>

Task.WhenAll s'assure que toutes les tâches sont terminées avant de continuer. Le mot-clé await est essentiel pour gérer correctement les opérations asynchrones ; cela évite de bloquer le thread principal en attendant les résultats. Bien que Task.Result offre une alternative pour récupérer les résultats, elle est généralement moins préférée en raison de problèmes de blocage potentiels. Cette approche fournit un moyen propre et efficace de gérer des tâches asynchrones simultanées avec diverses valeurs de retour.

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!

Déclaration:
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