Sobes.tech
Senior

Qu'est-ce qu'une goroutine ? Comment est-elle organisée ?

sobes.tech IA

Réponse de l'IA

Une goroutine est un fil d'exécution léger dans le langage Go. Contrairement aux threads système, les goroutines sont gérées par le runtime de Go et ont une pile très petite (commençant à quelques kilo-octets et pouvant croître dynamiquement). Cela permet d'exécuter des centaines de milliers de goroutines simultanément avec peu de surcharge.

Structure d'une goroutine :

  • Lors de la création d'une goroutine (avec l'opérateur go), le planificateur de Go la place dans la file d'attente des tâches prêt à être exécutées.
  • Le runtime de Go utilise une planification M:N : M threads système (threads OS) gèrent N goroutines.
  • Les goroutines changent de contexte au niveau du runtime, ce qui est plus rapide que le changement de threads système.
  • Chaque thread (M) peut exécuter plusieurs goroutines (N), en alternant entre elles lors de blocages ou selon les besoins.

Exemple de création d'une goroutine :

func sayHello() {
    fmt.Println("Bonjour depuis la goroutine")
}

func main() {
    go sayHello() // lancer la goroutine
    time.Sleep(time.Second) // attendre pour que la goroutine ait le temps de s'exécuter
}