Heim > Backend-Entwicklung > C++ > „await Task.WhenAll' vs. Multiple Awaits: Welches ist die bevorzugte Methode für die Handhabung mehrerer asynchroner Aufgaben?

„await Task.WhenAll' vs. Multiple Awaits: Welches ist die bevorzugte Methode für die Handhabung mehrerer asynchroner Aufgaben?

Linda Hamilton
Freigeben: 2025-01-20 07:26:09
Original
494 Leute haben es durchsucht

`await Task.WhenAll` vs. Multiple Awaits: Which is the Preferred Method for Handling Multiple Asynchronous Tasks?

Die bevorzugte Methode zur asynchronen Aufgabenerledigung: Vergleich von einzelnen await Task.WhenAll und mehreren await

Bei der asynchronen Programmierung müssen Entwickler bei der Bearbeitung mehrerer Aufgaben häufig zwischen der Verwendung einer einzelnen await Task.WhenAll-Anweisung oder der Ausführung mehrerer await-Anweisungen nacheinander wählen. In diesem Artikel werden die Vorteile der Verwendung von await Task.WhenAll gegenüber mehreren awaits untersucht, insbesondere in Szenarien, in denen die Reihenfolge, in der Aufgaben erledigt werden, keine Rolle spielt.

Der folgende Codeausschnitt zeigt beide Methoden:

<code class="language-csharp">// 使用多个 await
static async Task DoWork1()
{
    var t1 = DoTaskAsync("t1.1", 3000);
    var t2 = DoTaskAsync("t1.2", 2000);
    var t3 = DoTaskAsync("t1.3", 1000);

    await t1; await t2; await t3;

    Console.WriteLine("DoWork1 results: {0}", String.Join(", ", t1.Result, t2.Result, t3.Result));
}

// 使用 await Task.WhenAll
static async Task DoWork2()
{
    var t1 = DoTaskAsync("t2.1", 3000);
    var t2 = DoTaskAsync("t2.2", 2000);
    var t3 = DoTaskAsync("t2.3", 1000);

    await Task.WhenAll(t1, t2, t3);

    Console.WriteLine("DoWork2 results: {0}", String.Join(", ", t1.Result, t2.Result, t3.Result));
}</code>
Nach dem Login kopieren

Warum ist await Task.WhenAll besser als mehrere await?

  1. Fehlerweitergabe: await Task.WhenAll sammelt alle Fehler aus verschiedenen Aufgaben und gibt sie als AggregateException weiter. Dadurch wird sichergestellt, dass keine Fehler verloren gehen, wenn eine oder mehrere Aufgaben fehlschlagen. Mehrere await verbergen Fehler, wenn das vorherige await eine Ausnahme auslöst.

  2. Garantierter Abschluss: await Task.WhenAll Garantiert, dass alle Aufgaben vor ihrer Rückkehr abgeschlossen werden, auch wenn einige Aufgaben Fehler aufweisen oder abgebrochen wurden. Dies ist besonders nützlich, wenn Ihr Code darauf angewiesen ist, dass die Ergebnisse aller Aufgaben verfügbar sind.

  3. Vereinfachen Sie Ihren Code: Verwenden Sie await Task.WhenAll, um die Semantik des Wartens auf mehrere Aufgaben in Ihrem Code explizit zu machen, was die Lesbarkeit verbessert und das Risiko von Fehlern im Zusammenhang mit der Parallelität verringert.

Das obige ist der detaillierte Inhalt von„await Task.WhenAll' vs. Multiple Awaits: Welches ist die bevorzugte Methode für die Handhabung mehrerer asynchroner Aufgaben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage