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.