Sobes.tech
Junior

Qu'est-ce que les goroutines?

sobes.tech IA

Réponse de l'IA

Fils d'exécution légers, gérés par l'environnement d'exécution de Go. Ils sont créés avec le mot-clé go avant d'appeler une fonction.

Caractéristiques principales :

  • Moins de consommation mémoire : La goroutine commence avec une taille de pile petite (généralement 2 Ko), qui peut augmenter ou diminuer dynamiquement.
  • Création plus rapide : La création d'une goroutine est beaucoup plus rapide que la création d'un thread système.
  • Multiplexage sur les threads système : Plusieurs goroutines peuvent être multiplexées sur un nombre réduit de threads système par le planificateur de Go.
  • Planification coopérative : Les goroutines ne sont pas préemptivement interrompues ; elles cèdent volontairement le contrôle au planificateur (par exemple, lors d'appels bloquants ou d'appels explicites à runtime.Gosched()).

Exemple de création :

package main

import (
	"fmt"
	"time"
)

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

func main() {
	go sayHello() // Lance sayHello comme une goroutine
	fmt.Println("Bonjour depuis la fonction principale!")
	time.Sleep(1 * time.Second) // Pour que la fonction principale ne se termine pas avant la goroutine
}

Comparaison avec les threads :

Caractéristique Goroutines de Go Threads du système d'exploitation
Gestion Environnement d'exécution de Go Système d'exploitation
Consommation mémoire Faible, pile dynamique Élevée, pile fixe
Création Rapide Lente
Planification Coopérative Préemptive
Synchronisation Canaux, package sync Mutex, sémaphores du système d'exploitation