Go · Avançado · Inglês · Técnico
scheduler
Escalonador do runtime do Go que distribui milhares de goroutines (G) sobre poucas threads do sistema (M), usando processadores lógicos (P) no modelo GMP.
Onde usar
Explica por que goroutines são baratas e por que uma delas bloqueada em chamada de sistema não para as outras. GOMAXPROCS define quantos P existem; desde o Go 1.14, o escalonador pode preemptar laços longos.
Em código
n := runtime.GOMAXPROCS(0) // P disponíveis
fmt.Println(n, runtime.NumGoroutine())
runtime.Gosched() // cede a vezExemplos
The scheduler runs thousands of goroutines on a few threads.
O scheduler roda milhares de goroutines em poucas threads.
Don't rely on the scheduler to run goroutines in order.
Não conte com o scheduler para rodar goroutines em ordem.
Cuidado
Não presuma ordem de execução entre goroutines; o scheduler decide, e programas corretos não dependem disso.
Sinônimos
escalonador, modelo GMP