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.