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)
}