Async/Await: Fire and Forget vs. Waiting for Completion
Das Verständnis der Interaktion zwischen einer aufrufenden Funktion und einer aufgerufenen asynchronen Funktion ist entscheidend für effizienten und korrekten Code. Lassen Sie uns verschiedene Ansätze untersuchen:
Szenario 1: Fire and Forget (Einfach): Die aufgerufene Funktion (Callee) wird initiiert, aber ihre Fertigstellung wird vom Aufrufer (Caller) ignoriert. Der Anrufer geht sofort weiter.
Szenario 2: Warten auf den Abschluss: Der Aufrufer wartet explizit darauf, dass der Angerufene fertig ist, bevor er mit der Ausführung fortfährt.
Lassen Sie uns nun die Komplexität von Thread-Pools vorstellen:
Szenario 3: Fire and Forget auf einem ThreadPool-Thread: Der Aufgerufene läuft auf einem Thread-Pool-Thread, aber der Aufrufer ignoriert seinen Abschlussstatus.
Szenario 4: Warten auf den Abschluss eines ThreadPool-Threads: Der Aufrufer wartet geduldig auf den Abschluss des Aufgerufenen, obwohl er asynchron in einem Threadpool-Thread ausgeführt wird.
Lassen Sie uns abschließend die Auswirkungen von async
Schlüsselwörtern betrachten:
Szenario 5: Fire and Forget mit Async im ThreadPool-Thread: Ähnlich wie Szenario 3, aber der Callee wird deklariert async
, seine Fertigstellung wird jedoch weiterhin ignoriert.
Szenario 6: Warten auf den Abschluss mit Async im ThreadPool-Thread: Der Aufrufer verwendet await
, um den Abschluss des Aufgerufenen sicherzustellen, bevor er fortfährt, selbst wenn der Aufgerufene in einem Thread-Pool-Thread ausgeführt wird. Dies ist der robusteste Ansatz.
Das obige ist der detaillierte Inhalt vonFire and Forget vs. Awaiting in Async/Await: Wann sollten Sie warten, bis Async-Aufgaben abgeschlossen sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!