Heim >Backend-Entwicklung >C++ >Wie kann ich effizient auf mehrere asynchrone Aufgaben mit verschiedenen Ergebnistypen warten?

Wie kann ich effizient auf mehrere asynchrone Aufgaben mit verschiedenen Ergebnistypen warten?

Susan Sarandon
Susan SarandonOriginal
2025-01-28 03:16:08191Durchsuche

Effiziente Bearbeitung mehrerer asynchroner Aufgaben mit unterschiedlichen Rückgabetypen

Bei der asynchronen Programmierung werden häufig die Ergebnisse mehrerer gleichzeitig laufender Aufgaben benötigt, von denen jede möglicherweise einen anderen Datentyp zurückgibt. Lassen Sie uns dies anhand von drei Beispielaufgaben veranschaulichen:

  • FeedCat(): Gibt ein Cat-Objekt zurück.
  • SellHouse(): Gibt ein House-Objekt zurück.
  • BuyCar(): Gibt ein Tesla-Objekt zurück.

Wir benötigen alle Ergebnisse, bevor wir fortfahren können. Während eine sequenzielle Ausführung möglich ist, ist die gleichzeitige Ausführung weitaus effizienter. Die Herausforderung liegt im Umgang mit den unterschiedlichen Ergebnistypen.

Lösung: Nutzung Task.WhenAll und individueller Erwartungen

Die Lösung beinhaltet Task.WhenAll, das darauf wartet, dass alle bereitgestellten Aufgaben abgeschlossen sind. Nach Abschluss einzelne Ergebnisse mit await:

abrufen
<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.WhenAll erstellt eine übergeordnete Aufgabe, die erst abgeschlossen wird, wenn alle untergeordneten Aufgaben (catTask, houseTask, carTask) abgeschlossen sind. Anschließend wird darauf gewartet, dass jede untergeordnete Aufgabe einzeln ihr spezifisches Ergebnis abruft.

How Can I Efficiently Await Multiple Asynchronous Tasks with Diverse Result Types?

Das obige ist der detaillierte Inhalt vonWie kann ich effizient auf mehrere asynchrone Aufgaben mit verschiedenen Ergebnistypen warten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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