Sobes.tech
Senior

É criado um novo thread no sistema operativo para cada goroutine?

sobes.tech IA

Resposta da IA

Não, para cada goroutine em Go não é criado um thread separado do sistema operativo. Uma goroutine pode ser considerada como uma thread leve (lightweight thread), que é gerida pelo agendador do Go (runtime scheduler).

O runtime do Go usa um modelo M:N, onde M é o número de threads do sistema operativo e N é o número de goroutines. O agendador distribui muitas goroutines por um menor número de threads do sistema operativo, usando os recursos do sistema de forma eficiente.

Isto permite criar milhares e até milhões de goroutines sem custos adicionais significativos, ao contrário dos threads do sistema, que são mais pesados.

Assim, as goroutines são tarefas planeadas de forma cooperativa dentro de uma ou várias threads do sistema operativo, e não uma correspondência 1:1.