async / attendre: augmenter la réactivité sans filetage
Une idée fausse commune est que async
/ await
crée de nouveaux threads. Bien que ce ne soit pas le cas, il est crucial de comprendre comment cela améliore la réactivité des applications. Cet article explique comment async
/ await
y parvient sans compter sur des threads supplémentaires.
Décomposition de la méthode
async
/ await
divise une méthode en deux sections distinctes:
await
. await
. flux d'exécution
await
. await
renvoie le contrôle à la boucle d'événement (ou boucle de message). await
, exécutant la partie 2. Contexte de synchronisation et réactivité de l'interface utilisateur
Le message en file d'attente, indiquant l'achèvement, est géré par le contexte de synchronisation. Dans les cadres d'interface utilisateur comme les formulaires Windows, ce message est ajouté à la pompe de message, garantissant que les mises à jour de l'interface utilisateur se produisent en douceur. Cela empêche les gel de l'interface utilisateur, permettant aux utilisateurs d'interagir avec l'application (par exemple, les boutons de clic) même pendant les tâches asynchrones de longue durée.
Mécanismes sous-jacents
Alors que async
/ await
lui-même évite la création de threads, les méthodes attendues peuvent utiliser des threads en interne. Cependant, de nombreuses opérations asynchrones (comme les E / S de réseau et l'accès aux fichiers) utilisent des mécanismes alternatifs et sans filetage.
en résumé
async
/ await
améliore considérablement la réactivité en divisant stratégiquement les méthodes et en permettant à la boucle d'événement de rester active pendant les opérations asynchrones. Cela empêche le blocage des threads principaux, ce qui entraîne une expérience utilisateur fluide et réactive sans les frais généraux de création et de gestion des threads supplémentaires.
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!