Junior — Middle
Em que situações ocorre a troca automática de execução ao usar goroutines?
sobes.tech IA
Resposta da IA
No Go, a troca automática de execução entre goroutines ocorre nas seguintes situações:
- Quando uma goroutine chama uma função que bloqueia a execução, por exemplo, leitura de um canal, escrita em um canal ou uma chamada de sistema que bloqueia a thread.
- Ao chamar a função runtime.Gosched(), que explicitamente cede o controle ao agendador para trocar para outra goroutine.
- Quando uma goroutine termina, o agendador troca para outra goroutine pronta para execução.
O runtime do Go contém um agendador que distribui a execução das goroutines nos threads do sistema disponíveis (M). A troca ocorre automaticamente para usar eficientemente a CPU e não bloquear toda a execução do programa enquanto aguarda operações de entrada/saída ou sincronização.