Maison > développement back-end > C++ > Programmation asynchrone vs multithreading: Quelle est la différence?

Programmation asynchrone vs multithreading: Quelle est la différence?

DDD
Libérer: 2025-01-28 15:51:10
original
362 Les gens l'ont consulté

Asynchronous Programming vs. Multithreading: What's the Difference?

Programmation asynchrone et multi-étanches: différences clés

La programmation asynchrone et les moustiquaires sont souvent confus, mais ce sont des concepts complètement différents.

Programmation asynchrone

Le noyau de la programmation asynchrone est Opération non bloquante

. Lors de la rencontre de l'expression "Await" dans la méthode asynchrone, elle ne bloquera pas l'exécution du thread pour attendre que la tâche se termine. Au lieu de cela, il enregistrera la partie restante de la méthode dans une continuation et paiera le contrôle du droit de contrôle à l'appelant de la méthode asynchrone.

Il est important que la méthode asynchrone n'aie pas besoin de créer des threads supplémentaires

. Étant donné que la méthode asynchrone fonctionne dans le contexte actuel de synchronisation, seul le temps de thread est utilisé pendant l'activité. "Task.Run" peut désinstaller le travail dense du CPU sur le thread d'arrière-plan, mais cela n'est pas valide pour le processus d'attendre le résultat.

multi-thread

Multi-threads impliquent l'allocation de tâches à plusieurs threads de travail. Chaque processeur gère la tâche d'affectation indépendamment. Coordonner ces fils de travail pour prévenir les conflits des ressources et garantir que la compensation appropriée augmente la complexité. Une métaphore simple

L'exemple du restaurant peut aider à comprendre la différence entre les deux:

Synchrones:

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

Single-Threading:
    Commencez en même temps des œufs frits et du pain grillé et effectuez d'autres tâches en même temps. Lorsque la notification chronographe terminera la cuisine.
  • Asynchrones multi-threads: ont utilisé des chefs supplémentaires pour préparer les œufs et le pain indépendamment.
  • Les avantages de la programmation asynchrone
  • Lorsque la tâche ne se lie pas du processeur, l'avantage de programmation asynchrone est évident. Il n'est pas nécessaire d'allouer une ligne de travail pour chaque tâche, d'attendre simplement que les résultats soient disponibles et d'effectuer d'autres activités au cours de cette période. Jon Skeet Exemple

Considérez l'exemple de Jon Skeet:

Lors de l'appel , il déclenchera un fonctionnement asynchrone sans bloquer le thread d'appel.

Enregistrez la méthode restante comme continuation et exécutez lorsque la durée du site Web est disponible. En fonctionnant ici, l'appelant peut continuer à effectuer d'autres tâches.

Une fois l'achèvement, l'exécution se poursuit et le texte de l'étiquette est défini avec la durée du site Web.

<code class="language-c#">async void DisplayWebsiteLength ( object sender, EventArgs e )
{
    label.Text = "Fetching ...";
    using ( HttpClient client = new HttpClient() )
    {
        Task<string> task = client.GetStringAsync("http://csharpindepth.com");
        string text = await task;
        label.Text = text.Length.ToString();
    }
}</code>
Copier après la connexion
    En bref, la programmation asynchrone fournit un moyen d'effectuer des tâches sans autre progression de l'opération dans des threads uniques. Grâce à cette méthode, l'efficacité du code peut être améliorée et l'utilisation des ressources.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal