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