ホームページ >バックエンド開発 >C++ >.NET 4.5 を使用して複数の非同期タスクを効率的に並行して実行するにはどうすればよいですか?

.NET 4.5 を使用して複数の非同期タスクを効率的に並行して実行するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-13 06:27:41937ブラウズ

How Can I Efficiently Run Multiple Async Tasks in Parallel using .NET 4.5?

.NET 4.5 での効率的な並列非同期タスク実行

.NET 4.5 では、長時間実行される同時タスクを管理する際に課題が生じます。 Task.Run() は基本的なアプローチを提供しますが、非同期機能を完全に活用する効率性と優雅さに欠けています。

優れたソリューションは、async/await を利用して真の非同期 Sleep メソッドを作成し、中断と効率的な再開を可能にします。 Task.WhenAll() は複数のタスクの完了を同時に待機します。

改良されたコード例:

<code class="language-csharp">public static async Task Go()
{
    Console.WriteLine("Initiating tasks");

    Task<int> task1 = SleepAsync(5000);
    Task<int> task2 = SleepAsync(3000);

    await Task.WhenAll(task1, task2);

    int totalSleepTime = task1.Result + task2.Result;

    Console.WriteLine($"Total sleep time: {totalSleepTime} ms");
}

private static async Task<int> SleepAsync(int ms)
{
    Console.WriteLine($"Sleeping for {ms} ms");
    await Task.Delay(ms);
    Console.WriteLine($"Sleep of {ms} ms COMPLETE");
    return ms;
}</code>

この拡張コードは、async 内のノンブロッキング遅延に Task.Delay()SleepAsync を使用します。 Go は、Task.WhenAll() を介して両方のタスクを同時に開始し、並列実行を可能にします。 結果には、完了時に Result プロパティを使用してアクセスします。

以上が.NET 4.5 を使用して複数の非同期タスクを効率的に並行して実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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