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.