Middle+
O que é uma goroutine? Como ela difere de uma thread do sistema operacional? Quem controla as goroutines?
sobes.tech IA
Resposta da IA
Uma goroutine é um fio de execução leve na linguagem Go, gerenciado pelo runtime do Go e não pelo sistema operacional. Ao contrário dos threads do SO, as goroutines usam muito menos memória (geralmente alguns quilobytes de pilha, que podem crescer e diminuir dinamicamente), e sua criação e troca de contexto são muito mais baratas em recursos.
Principais diferenças em relação aos threads do SO:
- As goroutines são planejadas e gerenciadas pelo runtime do Go, não pelo SO.
- Pode haver milhares ou dezenas de milhares de goroutines em um único processo sem carga significativa.
- A troca de contexto entre goroutines é mais rápida, pois não requer troca de núcleo.
O gerenciamento de goroutines é realizado pelo runtime do Go, que contém um agendador próprio (M:N scheduler), que mapeia muitas goroutines (G) para um menor número de threads do SO (M). Isso permite usar os recursos do sistema de forma eficiente e simplifica a programação paralela.