Maison >développement back-end >Golang >Quelle est la différence entre les coroutines et les threads dans Golang ?

Quelle est la différence entre les coroutines et les threads dans Golang ?

青灯夜游
青灯夜游original
2019-12-25 18:06:383387parcourir

Quelle est la différence entre les coroutines et les threads dans Golang ?

La différence entre les coroutines et les threads dans Golang

De manière générale, les coroutines sont comme des threads légers.

Les fils de discussion ont généralement une pile et une taille fixes. Afin d'éviter le gaspillage de ressources (ou le manque de ressources), les goroutines adoptent une stratégie d'expansion et de contraction dynamique : le montant initial est de 2k, et le maximum peut être étendu à 1G.

Chaque fil a un identifiant, qui sera renvoyé lors de la création du fil, afin que nous puissions manipuler le fil via l'identifiant du fil. Mais un tel concept n'existe pas dans Golang, nous devons donc considérer la création et la publication de coroutines au début du codage.

En termes de surcharge de planification pour la commutation de thread et de goroutine

En termes de surcharge de commutation thread/goroutine, goroutine est beaucoup plus petite que les threads

Thread : implique un changement de mode (commutation du mode utilisateur au mode noyau), 16 registres, PC, SP... et autres rafraîchissements de registres, etc.

Étant donné que la coroutine est complétée par le planificateur de coroutine en mode utilisateur et n'a pas besoin d'être piégée dans le noyau, le coût est faible.

Donc goroutine : seulement trois modifications de valeur de registre - PC/SP/DX.

Recommandations associées : tutoriel golang

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