Sobes.tech
Middle+

Comment sont structurées les goroutines et combien de mémoire occupent-elles dans la pile?

sobes.tech IA

Réponse de l'IA

Une goroutine est un thread léger géré par l’environnement d’exécution de Go (runtime). Elles sont multiplexées sur un nombre réduit de threads système (pool de threads).

Composants principaux:

  • Pile: Chaque goroutine possède une pile séparée et extensible. Initialement petite (16KB avec Go 1.4+, auparavant 8KB), elle peut augmenter ou diminuer selon les besoins.
  • Planificateur Go: Implémente le modèle M:N (M goroutines sur N threads système). Il gère le passage d’une goroutine à une autre sur les threads disponibles. La commutation se produit lors d’opérations bloquantes (entrée/sortie, attente sur un canal) ou via l’appel explicite runtime.Gosched().
  • Contexte: Contient un pointeur vers le code machine pour l’exécution, un pointeur vers la pile et d’autres métadonnées nécessaires au planificateur.

La taille initiale de la pile d’une goroutine depuis Go 1.4 est de 16KB. Cette taille n’est pas fixe et peut changer dynamiquement.