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 ?
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!