Sobes.tech
Junior — Middle

O planejador do sistema operativo obrigatoriamente suspende a execução de uma goroutine?

sobes.tech IA

Resposta da IA

Não, o escalonador do sistema operativo não pausa obrigatoriamente a execução de uma goroutine em Go. As goroutines são threads leves geridos pelo runtime do Go, e não diretamente pelo sistema operativo.

O runtime do Go planeja por si só a execução das goroutines nos threads do sistema (planeamento M:N). As goroutines podem ser suspensas e retomadas nos seguintes casos:

  • Quando uma goroutine espera por entrada/saída ou fica bloqueada na sincronização.
  • Quando uma goroutine cede explicitamente o controlo (por exemplo, chamada a runtime.Gosched()).
  • Quando é necessário equilibrar a carga entre os threads.

Assim, a mudança entre goroutines ocorre de forma cooperativa e sob o controlo do runtime do Go, e não de forma forçada pelo sistema operativo.