首页 >后端开发 >C++ >如何高效执行多个不同返回类型的异步任务并检索结果?

如何高效执行多个不同返回类型的异步任务并检索结果?

Linda Hamilton
Linda Hamilton原创
2025-01-28 03:26:08459浏览

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

管理具有不同返回类型的并发异步操作

此示例演示了如何同时执行多个异步任务(每个任务返回不同的结果类型)并高效地检索这些结果。 想象三个异步函数:

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

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

}</code>

我们将使用 Task.WhenAll 同时运行这些并收集结果。

<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 确保所有任务在继续之前完成。 await 关键字对于正确处理异步操作至关重要;它可以防止在等待结果时阻塞主线程。 虽然 Task.Result 提供了检索结果的替代方法,但由于潜在的阻塞问题,它通常不太受欢迎。 这种方法提供了一种干净有效的方法来管理具有不同返回值的并发异步任务。

以上是如何高效执行多个不同返回类型的异步任务并检索结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn