Sobes.tech
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.