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:
- P aloca M para executar goroutines.
- M executa G, alternando entre elas conforme necessário (por exemplo, em bloqueios ou espera).
- 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
}