Senior
Como funciona o agendador do Go? Fale-me sobre o modelo GMP.
sobes.tech IA
Resposta da IA
O programador Go baseia-se no modelo GMP, onde:
- G (goroutine) — linha de execução leve.
- M (máquina) — thread do sistema operativo onde as goroutines são executadas.
- P (processador) — processador lógico que liga G e M.
Cada M pode executar apenas uma G de cada vez, mas para executar M deve ter acesso a P. A quantidade de P limita o número máximo de goroutines que podem ser executadas simultaneamente ao nível do programador.
Funcionamento do programador:
- As goroutines são criadas e colocadas numa fila de prontas a executar.
- P escolhe uma G da fila e liga-a a M.
- M executa G.
- Se G ficar bloqueada (por exemplo, em entrada/saída), M é liberada e pode pegar outra G.
- O programador equilibra a carga entre M e G, alternando-os conforme necessário.
Esta abordagem permite usar eficazmente os threads do sistema e escalar a execução de um grande número de goroutines com custos mínimos.