Junior — Middle
O número de goroutines criadas está relacionado com o número de núcleos no processador?
sobes.tech IA
Resposta da IA
O número de goroutines criadas em Go não está diretamente relacionado com o número de núcleos do processador. Pode criar muitas goroutines — são threads leves geridas pelo runtime do Go, e a sua quantidade é principalmente limitada pela memória disponível e pela lógica do programa.
O número de núcleos influencia o número de threads do sistema operativo que podem ser executadas simultaneamente, e no parâmetro GOMAXPROCS, que define o número máximo de threads a executar goroutines em paralelo. Mas o número de goroutines geralmente excede bastante o número de núcleos, pois são agendadas e trocadas de forma eficiente dentro do runtime.
Exemplo:
runtime.GOMAXPROCS(4) // Usar 4 núcleos
for i := 0; i < 1000; i++ {
go func(n int) {
fmt.Println("Goroutine", n)
}(i)
}
time.Sleep(time.Second)
Aqui, são criadas 1000 goroutines, embora existam apenas 4 núcleos.