Junior — Middle
Come si può forzare il pianificatore di Go a eseguire il cambio di contesto su un'altra goroutine?
sobes.tech AI
Risposta dell'AI
In Go, per forzare il cambio di contesto tra goroutine si utilizza la funzione runtime.Gosched(). Essa informa il pianificatore che la goroutine corrente è pronta a cedere il processore ad altre goroutine, permettendo loro di essere eseguite.
Esempio di utilizzo:
package main
import (
"fmt"
"runtime"
)
func main() {
go func() {
for i := 0; i < 5; i++ {
fmt.Println("Goroutine 1 -", i)
runtime.Gosched() // cede il processore
}
}()
for i := 0; i < 5; i++ {
fmt.Println("Goroutine principale -", i)
runtime.Gosched() // cede il processore
}
}
In questo modo, runtime.Gosched() permette di dare esplicitamente la possibilità ad altre goroutine di essere eseguite, senza bloccare quella corrente.