Async/Await : lancer et oublier ou attendre l'achèvement
Comprendre l'interaction entre une fonction appelante et une fonction asynchrone appelée est crucial pour un code efficace et correct. Examinons différentes approches :
Scénario 1 : Fire and Forget (Simple) : La fonction appelée (Callee) est lancée mais son achèvement est ignoré par l'appelant (Caller). L'appelant procède immédiatement.
Scénario 2 : En attente de fin : L'appelant attend explicitement que l'appelé ait terminé avant de poursuivre l'exécution.
Présentons maintenant la complexité des pools de threads :
Scénario 3 : Déclencher et oublier sur un thread de pool de threads : L'appelé s'exécute sur un thread de pool de threads, mais l'appelant ignore son état d'achèvement.
Scénario 4 : En attente de fin sur un thread de pool de threads : L'appelant attend patiemment que l'appelé termine, même s'il s'exécute de manière asynchrone sur un thread de pool de threads.
Enfin, considérons l'impact des async
mots-clés :
Scénario 5 : Déclencher et oublier avec Async sur ThreadPool Thread : Similaire au scénario 3, mais l'appelé est déclaré async
, mais son achèvement est toujours ignoré.
Scénario 6 : Attente d'achèvement avec Async sur le thread ThreadPool : L'appelant utilise await
pour garantir l'achèvement de l'appelé avant de continuer, même lorsque l'appelé s'exécute sur un thread de pool de threads. C'est l'approche la plus robuste.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!