Maison > développement back-end > Golang > le corps du texte

Le golang est-il un processus unique ?

coldplay.xixi
Libérer: 2020-07-22 09:25:29
original
4349 Les gens l'ont consulté

Golang n'est pas un processus unique, mais multithread ; le modèle de thread de golang est le modèle MPG. De manière générale, les processus Go et les threads du noyau ont une correspondance plusieurs-à-plusieurs, donc tout d'abord, il doit être multithread.

Le golang est-il un processus unique ?

golang n'est pas un processus unique, mais multithread.

Golang a un modèle dit M ratio N. N go routines peuvent être créées sous M threads. De manière générale, N est beaucoup plus grand que M. Il s'agit essentiellement d'un modèle multi-thread, mais. la planification des coroutines dépend de la décision d'exécution de Go qui souligne que les développeurs doivent utiliser des canaux pour la synchronisation entre les coroutines.

Quant aux threads, le niveau de langage n'étant pas ouvert, vous pouvez le comprendre comme un modèle multi-coroutine. Plusieurs go routine peuvent être créés sur un seul thread. De manière générale, le même nombre de threads que le. le nombre de cœurs de processeur sera créé. Bien entendu, le nombre est en fait déterminé par runtime.

Concernant la planification de goroutine, celle-ci est en fait en constante évolution et changement. Je ne parlerai que du modèle GMP qui s'exécute sur M threads. Chaque fois qu'une tâche est exécutée, le P (processeur) actuel. sera vérifiée. La file d'attente exécutable sur P contient des goroutines exécutables. Une fois qu'il n'y a plus de goroutine exécutable sur le P actuel, il volera la goroutine dans la file d'attente exécutable d'un autre P.

Théoriquement, la création de goroutines n'est limitée que par la mémoire. De manière générale, le maximum est de 2 Ko. Pour un thread avec 2 Mo d'espace, théoriquement, cela peut facilement atteindre 1 000. Bien sûr, ce n'est qu'une situation idéale. , donc le système d'exploitation Le nombre de threads n'augmentera pas à mesure que le nombre de goroutines créées augmente. La planification des threads est relativement gourmande en performances pour Go. Les changements fréquents de planification n'existeront qu'entre les goroutines, et les threads ne conserveront que le même nombre de threads actifs que le nombre de processeurs.

Recommandations d'apprentissage associées : Tutoriel de langue Go

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!

Étiquettes associées:
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