Sobes.tech
Junior — Middle

Em que casos uma goroutine termina a sua execução e passa o controlo para outra?

sobes.tech IA

Resposta da IA

Em Go, a goroutine deixa de executar e transfere o controlo para outra goroutine nos seguintes casos:

  • Quando a goroutine chama explicitamente uma função que a bloqueia (por exemplo, leitura de um canal vazio).
  • Ao usar a palavra-chave runtime.Gosched(), que voluntariamente cede o processador a outras goroutines.
  • Quando a goroutine termina a sua função (retorna da função), ela deixa de executar.

O escalonador de goroutines do Go troca automaticamente a execução entre goroutines, garantindo a concorrência. Por exemplo, ao bloquear numa operação de entrada/saída ou ao aguardar dados de um canal, a goroutine atual é suspensa e o controlo é transferido para outra.