Maison > Article > développement back-end > 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!