Sobes.tech
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.