Junior — Middle
Comment forcer le planificateur Go à effectuer un changement de contexte vers une autre goroutine?
sobes.tech IA
Réponse de l'IA
En Go, pour forcer le changement de contexte entre goroutines, on utilise la fonction runtime.Gosched(). Elle informe le planificateur que la goroutine en cours est prête à céder le processeur à d'autres goroutines, leur permettant de s'exécuter.
Exemple d'utilisation :
package main
import (
"fmt"
"runtime"
)
func main() {
go func() {
for i := 0; i < 5; i++ {
fmt.Println("Goroutine 1 -", i)
runtime.Gosched() // céder le planificateur
}
}()
for i := 0; i < 5; i++ {
fmt.Println("Goroutine principale -", i)
runtime.Gosched() // céder le planificateur
}
}
Ainsi, runtime.Gosched() permet explicitement de donner la chance à d'autres goroutines de s'exécuter, sans bloquer la goroutine courante.