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

.NET 4.5 で並列非同期タスクを効率的に実行するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-13 12:09:43
オリジナル
972 人が閲覧しました

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

.NET 4.5 での並列非同期操作の最適化

.NET 4.5 は、複数の時間のかかるタスクを同時に実行するための堅牢な非同期プログラミング機能を提供します。 ただし、一部の初期実装は過度に複雑に見え、非同期手法に固有の優雅さが欠けている場合があります。 この改良された例では、これらの欠点が解決されています。

強化されたコード構造

次の洗練されたコードは、より効率的で合理化されたアプローチを提供します。

<code class="language-csharp">async Task GoAsync()
{
    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 async Task<int> SleepAsync(int milliseconds)
{
    Console.WriteLine($"Sleeping for {milliseconds} ms");

    try
    {
        await Task.Delay(milliseconds);
        return milliseconds;
    }
    finally
    {
        Console.WriteLine($"Sleep for {milliseconds} ms COMPLETE");
    }
}</code>
ログイン後にコピー

主な改善点:

  • GoAsync は非同期メソッド (async Task) になり、await を使用してタスクの完了を管理できるようになります。
  • SleepAsync は、Task<int> を返す非同期メソッドであり、操作の非同期の性質を反映しています。
  • Task.WhenAll は両方のタスクの完了を同時に効率的に待機するため、明示的な .Result アクセスの必要性がなくなり、パフォーマンスが向上します。

機能コード:

この改訂されたコードは両方のタスクを同時に実行し、結果を効果的に収集します。 この方法は、.NET 4.5 内での並列非同期タスク実行のための、よりクリーンで、より簡潔で、効率的なソリューションを提供します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート