Sobes.tech
Middle+

Como funcionam as goroutines por baixo dos panos (modelo GMP)?

sobes.tech IA

Resposta da IA

No Go, as goroutines são implementadas através do modelo GMP, onde:

  • G (goroutine) — é um fio de execução leve com sua própria pilha e contexto.
  • M (máquina) — é um fio do sistema operativo onde as goroutines são executadas.
  • P (processador) — é um processador lógico que conecta G e M, gerenciando a execução.

Funcionamento do modelo:

  1. P aloca M para executar goroutines.
  2. M executa G, alternando entre elas conforme necessário (por exemplo, em bloqueios ou espera).
  3. O escalonador GMP equilibra a carga, distribuindo as goroutines entre M e P disponíveis.

Isso permite usar eficientemente os fios do sistema, criando milhares de goroutines com custos mínimos de memória e troca de contexto, pois a troca entre goroutines ocorre ao nível do usuário, não do núcleo do sistema operativo.

Exemplo:

func main() {
    go func() {
        fmt.Println("Goroutine em execução")
    }()
    time.Sleep(time.Second) // Espera a goroutine terminar
}