Sobes.tech
Junior — Middle

Como forçar o agendador do Go a realizar uma troca de contexto para outra goroutine?

sobes.tech IA

Resposta da IA

No Go, para forçar a mudança de contexto entre goroutines, usa-se a função runtime.Gosched(). Ela informa o agendador de tarefas que a goroutine atual está pronta a ceder o processador a outras goroutines, permitindo que elas sejam executadas.

Exemplo de uso:

package main

import (
    "fmt"
    "runtime"
)

func main() {
    go func() {
        for i := 0; i < 5; i++ {
            fmt.Println("Goroutine 1 -", i)
            runtime.Gosched() // cede o agendador
        }
    }()

    for i := 0; i < 5; i++ {
        fmt.Println("Goroutine principal -", i)
        runtime.Gosched() // cede o agendador
    }
}

Dessa forma, runtime.Gosched() permite dar explicitamente a oportunidade a outras goroutines de serem executadas, sem bloquear a goroutine atual.