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