Maison  >  Article  >  développement back-end  >  Quelle est la différence entre goroutine et coroutine

Quelle est la différence entre goroutine et coroutine

青灯夜游
青灯夜游original
2023-01-10 18:31:121614parcourir

Différence : 1. Goroutine communique via des canaux, et coroutine communique via des opérations de rendement et de récupération. 2. Les coroutines Goroutine ne sont pas complètement synchronisées et peuvent être exécutées en parallèle à l'aide de plusieurs cœurs. Les coroutines coroutines sont complètement synchronisées et ne fonctionneront pas en parallèle. 3. Goroutine peut basculer entre plusieurs coroutines/threads ; 4. L'application occupe une grande quantité de CPU pendant une longue période. Les utilisateurs de goroutine ont le droit de terminer cette tâche, mais pas la coroutine.

Quelle est la différence entre goroutine et coroutine

L'environnement d'exploitation de ce tutoriel : système Windows 7, GO version 1.18, ordinateur Dell G3.

Les langages C#, Lua et Python prennent tous en charge la fonctionnalité coroutine. Coroutine et goroutine ont des noms similaires. Les deux peuvent exécuter des fonctions ou des instructions dans un environnement indépendant, mais il existe deux différences entre elles :

  • goroutine peut être exécutée en parallèle

  • mais la coroutine est toujours exécutée de manière séquentielle ;

goroutines signifie parallèle (ou peut être déployé de manière parallèle), les coroutines ne sont généralement pas comme ça, les goroutines communiquent via des canaux ; les coroutines communiquent via des opérations de rendement et de récupération, les goroutines sont plus puissantes et efficaces que les coroutines. Réutilisez facilement la logique de coroutines en goroutines.

Au sens étroit, la goroutine peut se produire dans un environnement multithread, et la goroutine ne peut pas se contrôler pour obtenir un support hautement prioritaire ; la coroutine se produit toujours dans un seul thread, et le programme coroutine doit activement céder le contrôle avant l'hôte. peut obtenir le contrôle et transférer le contrôle. Remettez-le à d'autres coroutines.

La communication par canal est utilisée entre les goroutines, et les coroutines utilisent les opérations de rendement et de reprise.

Les concepts et les mécanismes de fonctionnement de la goroutine et de la coroutine sont dérivés des premiers systèmes d'exploitation.

Le mécanisme de fonctionnement de la coroutine est le traitement des tâches collaboratives. Les premiers systèmes d'exploitation exigeaient que chaque application se conforme aux règles de traitement des tâches du système d'exploitation. Lorsque l'application n'a pas besoin d'utiliser le processeur, elle transmettra activement l'utilisation du processeur. droits. Si un développeur laisse accidentellement ou intentionnellement une application occuper le processeur pendant une longue période, le système d'exploitation ne peut rien faire et le résultat est que l'ordinateur peut facilement ne plus répondre ou se bloquer.

goroutine est un traitement de tâches préemptif, qui est très similaire au traitement de tâches multi-thread et multi-processus existant. Le contrôle de l'application sur le CPU doit en fin de compte être géré par le système d'exploitation. Si le système d'exploitation constate qu'une application occupe une grande quantité de CPU pendant une longue période, l'utilisateur a le droit de mettre fin à la tâche. Résumé des différences entre

coroutine et goroutine

Différence 1 :

  • goroutine communique via des canaux

  • coroutine communique via des opérations de rendement et de récupération

Différence 2 :

  • Goroutine See More Les coroutines ne sont pas complètement synchronisées et peuvent être exécutées en parallèle à l'aide de plusieurs cœurs. Les détails dépendent de la conception du canal ;

  • coroutine Les coroutines sont complètement synchronisées et ne seront pas parallèles

Différence 3 :

  • goroutine peut activer plusieurs coroutines sur plusieurs threads, ce qui peut non seulement utiliser plusieurs cœurs, mais également réduire les frais de commutation.

  • coroutine ne s'exécute que dans un seul thread, ne s'exécute que dans un seul thread

Différence quatre :

  • système d'exploitation goroutine S'il s'avère qu'une application occupe une grande quantité de CPU pendant une longue période, alors le l'utilisateur a le droit de mettre fin à cette tâche.

  • coroutine Si un développeur laisse accidentellement ou intentionnellement une application occuper le processeur pendant une longue période, le système d'exploitation ne peut rien faire, le résultat est que l'ordinateur peut facilement ne plus répondre ou planter.

【Recommandations associées : Tutoriel vidéo Go, Enseignement de la programmation

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!

Déclaration:
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