Junior — Middle
Qual é o número máximo de goroutines que podem ser iniciadas simultaneamente numa aplicação?
sobes.tech IA
Resposta da IA
No Go, não há uma restrição rígida ao número máximo de goroutines que podem ser executadas simultaneamente. Teoricamente, podem ser lançadas muitas — dezenas, centenas e até milhões, dependendo dos recursos do sistema (memória, CPU).
As goroutines são muito leves em comparação com os threads do sistema operativo, pois usam uma pilha dinâmica que cresce conforme necessário.
No entanto, a restrição prática depende de:
- A quantidade de memória disponível (cada goroutine ocupa pelo menos alguns quilobytes).
- A lógica da aplicação e a sincronização entre goroutines.
- A carga no agendador do Go.
Exemplo de lançamento de muitas goroutines:
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
const n = 100000
wg.Add(n)
for i := 0; i < n; i++ {
go func(i int) {
defer wg.Done()
// trabalho simples
_ = i * 2
}(i)
}
wg.Wait()
fmt.Println("Todas as goroutines terminaram")
}
Portanto, a limitação é mais prática do que sistemática.