Sobes.tech
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:

  1. As goroutines são criadas e colocadas numa fila de prontas a executar.
  2. P escolhe uma G da fila e liga-a a M.
  3. M executa G.
  4. Se G ficar bloqueada (por exemplo, em entrada/saída), M é liberada e pode pegar outra G.
  5. 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.