Maison > développement back-end > C++ > Quelle est la différence entre la programmation asynchrone et le multithreading?

Quelle est la différence entre la programmation asynchrone et le multithreading?

Patricia Arquette
Libérer: 2025-01-28 15:46:10
original
547 Les gens l'ont consulté

What's the Difference Between Asynchronous Programming and Multithreading?

Programmation asynchrone et multi-étanches: deux méthodes qui se complètent

De nombreux développeurs ont initialement assimilé la programmation asynchrone à plusieurs threads, pensant que ce sont les échanges qui allouent les tâches à plusieurs processeurs. Cependant, si vous étudiez attentivement, vous constaterez qu'il existe des différences légères mais vitales entre les deux.

Méthode asynchrone: non-bloquant et lié au contexte

La conception de la méthode asynchrone est utilisée pour les opérations non bloquantes. L'expression "Await" n'arrêtera pas le thread actuel pendant l'exécution de la tâche. Au lieu de cela, il a enregistré la méthode restante comme continuation et renvoie le contrôle à l'appelant de la méthode asynchrone.

Fait intéressant, les méthodes asynchrones n'ont pas besoin de créer des threads supplémentaires. La méthode asynchrone ne nécessite pas plusieurs threads car ils s'exécutent dans le contexte de synchronisation actuel et n'utilisent que le temps de thread pendant l'activité. Bien que "tâche.run" puisse désinstaller le travail dense du CPU vers le thread d'arrière-plan, il est invalide en attendant le résultat.

Multi -thread: travail multi-thread

En revanche, les multiples-tirs impliquent des tâches allouées entre plusieurs threads, et chaque thread a son propre processeur spécial. Les tâches de traitement asynchrones, tandis que les fils se concentrent sur les fils de travail pour ces tâches. Activités: petit-déjeuner asynchrone

Imaginez préparer le petit déjeuner:

Synchrones:

Frais d'abord les œufs, puis cuire le pain.

Filetage unique asynchrone:
    Commencez les œufs frits et réglez la minuterie. Commencez à cuire du pain et réglez la minuterie. Pendant la cuisson, nettoyez la cuisine. Une fois que la minuterie sonne la cloche, retirez la nourriture et mangez-la du feu.
  • Multi-thread asynchrone: Embaucher deux chefs, un œuf au plat et un gril. Coordonner le travail pour éviter les conflits de cuisine et payer le salaire de deux chefs.
  • Cette analogie indique que multi-thread n'est qu'une forme d'asynchrone, où la tâche est affectée au thread de travail (thread). Le workflow asynchrone unique de secours unique implique des tâches de dépendance gérées par un seul thread de travail.
  • Exemple asynchrone de Jon Skeet
  • Le code de Jon Skeet démontre la programmation asynchrone:

L'exécution de cette méthode peut être effectuée en arrière-plan sans retarder l'opération de suivi. Il obtient le contenu du site Web, attend de terminer, puis affiche la longueur.

Améliorez la compréhension du flux de travail

La clé de ce processus de travail est de comprendre le chemin de "attendre":

  1. Créez une nouvelle tâche et demandez des données.
  2. Vérifiez si la tâche est terminée lorsque vous attendez la tâche. Si c'est le cas, obtenez le résultat et continuez à exécuter.
  3. Si elle n'est pas terminée, la méthode restante est marquée comme une continuation et le contrôle est renvoyé à l'appelant.
  4. Une fois la tâche terminée, l'appel est poursuivi sur le thread actuel ou un autre thread.
  5. Utilisez les résultats disponibles pour restaurer l'exécution au point "Await".

Essentiellement, la programmation asynchrone vous permet d'exécuter simultanément des tâches sans blocage ni création de threads supplémentaires. Il s'agit d'un outil puissant pour optimiser les performances et maintenir la capacité de réponse.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal