Sobes.tech
Junior — Middle

Qual é o número máximo de goroutines que podem ser iniciadas simultaneamente sem problemas substanciais para o sistema?

sobes.tech IA

Resposta da IA

Em Go, o número máximo de goroutines que podem ser executadas simultaneamente depende dos recursos do sistema (memória RAM, tempo de CPU) e da natureza das tarefas que realizam. Teoricamente, podem ser lançadas centenas de milhares ou até milhões de goroutines, pois são muito leves em comparação com os threads do sistema operativo.

No entanto, na prática:

  • Se as goroutines usam ativamente a CPU, um número demasiado alto pode diminuir o desempenho devido à troca de contexto.
  • Se as goroutines ficam bloqueadas em operações de entrada/saída ou esperam por eventos, pode haver muitas mais sem problemas substanciais.

Normalmente, em aplicações reais, lançam-se de algumas centenas a algumas milhares de goroutines sem problemas. Se for necessário escalar, recomenda-se fazer profiling da aplicação e monitorizar o consumo de memória e a carga de CPU.

Exemplo de criação de muitas goroutines:

for i := 0; i < 100000; i++ {
    go func(n int) {
        // algum trabalho
        fmt.Println(n)
    }(i)
}