Junior — Middle
¿Cómo se puede forzar al planificador de Go a realizar un cambio de contexto a otra gorutina?
sobes.tech AI
Respuesta de la IA
En Go, para forzar el cambio de contexto entre goroutines se utiliza la función runtime.Gosched(). Esta informa al planificador que la goroutine actual está lista para ceder el procesador a otras goroutines, permitiéndoles ejecutarse.
Ejemplo de uso:
package main
import (
"fmt"
"runtime"
)
func main() {
go func() {
for i := 0; i < 5; i++ {
fmt.Println("Goroutine 1 -", i)
runtime.Gosched() // cedemos el planificador
}
}()
for i := 0; i < 5; i++ {
fmt.Println("Goroutine principal -", i)
runtime.Gosched() // cedemos el planificador
}
}
De esta manera, runtime.Gosched() permite dar explícitamente la oportunidad a otras goroutines de ejecutarse, sin bloquear la actual.