ホームページ >バックエンド開発 >C++ >複数の非同期タスクを同時に待機し、その結果にアクセスするにはどうすればよいですか?

複数の非同期タスクを同時に待機し、その結果にアクセスするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-28 03:11:091034ブラウズ

How Can I Await Multiple Asynchronous Tasks Simultaneously and Access Their Results?

複数の同時非同期操作を効率的に処理する

この例では、それぞれ別のオブジェクト (それぞれ Cat、House、Tesla) を返す 3 つの独立した非同期操作 (FeedCat()SellHouse()BuyCar()) を管理する方法を示します。 このコードでは、続行する前にすべての操作が完了する必要があり、それぞれの結果にアクセスする必要があります。

最適なソリューションは、並列実行と待機に Task.WhenAll() を活用します。

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

await Task.WhenAll(catTask, houseTask, carTask);</code>

Task.WhenAll() が完了を確認した後、個々の結果に簡単にアクセスできます:

<code class="language-csharp">var cat = await catTask;
var house = await houseTask;
var car = await carTask;</code>

非同期関数は「ホット」タスク (すでに開始されている) を返すことに注意することが重要です。 Task.Result はオプションですが (完了が保証されているため)、読みやすさとエラー処理の向上という点で、一般的には await を使用することが推奨されます。

以上が複数の非同期タスクを同時に待機し、その結果にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。