Heim >Backend-Entwicklung >C++ >Wie kann ich effizient auf mehrere asynchrone Aufgaben mit verschiedenen Ergebnistypen warten?
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:
Cat
-Objekt zurück.House
-Objekt zurück.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.
Task.WhenAll
und individueller ErwartungenDie Lösung beinhaltet Task.WhenAll
, das darauf wartet, dass alle bereitgestellten Aufgaben abgeschlossen sind. Nach Abschluss einzelne Ergebnisse mit await
:
<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.
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!