首页 >后端开发 >C++ >我如何有效地等待具有多种结果类型的多个异步任务?

我如何有效地等待具有多种结果类型的多个异步任务?

Susan Sarandon
Susan Sarandon原创
2025-01-28 03:16:08191浏览

>有效处理具有多种返回类型的多个异步任务

在异步编程中,经常需要几个同时运行任务的结果,每个任务都可能返回其他数据类型。 让我们用三个示例任务说明:

  • > feedcat():返回a对象。 Cat
  • > sellhouse():
  • >返回a对象。 House
  • > buycar():
  • 返回a对象。 Tesla
  • >在继续之前,我们需要所有结果。虽然可以执行顺序执行,但并发执行效率要高得多。 挑战在于处理各种结果类型。

解决方案:利用

和个人等待

Task.WhenAll解决方案涉及

,它等待所有提供的任务完成。 完成后,使用

检索单个结果:Task.WhenAll 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>
创建一个父任务,该任务仅在完成所有子任务(

Task.WhenAllcatTask)时完成。 随后,等待每个孩子任务单独检索其特定结果。> houseTaskcarTask

以上是我如何有效地等待具有多种结果类型的多个异步任务?的详细内容。更多信息请关注PHP中文网其他相关文章!

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