Sobes.tech
Junior — Middle

Comment la répartition des quatre goroutines sur les quatre cœurs du processeur se fait-elle lors de leur lancement?

sobes.tech IA

Réponse de l'IA

En Go, le planificateur de goroutines (Goroutine scheduler) répartit les goroutines entre les threads système (M), qui sont à leur tour liés aux cœurs du processeur.

Si vous avez 4 goroutines et 4 cœurs de processeur, lors du démarrage du planificateur, il peut répartir chaque goroutine sur un cœur différent, assurant une exécution parallèle. Cela est possible si la variable d'environnement GOMAXPROCS est définie sur 4 (par défaut, dans les versions modernes de Go, elle est égale au nombre de cœurs disponibles).

Exemple:

runtime.GOMAXPROCS(4) // définit le nombre de threads disponibles à 4

for i := 0; i < 4; i++ {
    go func(id int) {
        fmt.Printf("Goroutine %d lancée\n", id)
        // travail
    }(i)
}

Le planificateur de Go répartira les goroutines entre les threads, qui peuvent s'exécuter sur différents cœurs, permettant une utilisation efficace des systèmes multiprocesseurs. Cependant, la répartition exacte dépend de la charge du système et du planificateur interne.