Junior — Middle
É obrigatório que o Go realize uma troca automática de contexto de execução entre goroutines?
sobes.tech IA
Resposta da IA
No Go, a troca automática de contexto entre goroutines ocorre, mas não no sentido clássico de multitarefa preemptiva, como nos sistemas operacionais.
As goroutines são threads leves gerenciados pelo runtime do Go. O escalonador do Go alterna a execução entre as goroutines para usar eficientemente os threads do sistema.
Características:
- O escalonador do Go usa multitarefa cooperativa: a goroutine deve ceder o controle, por exemplo, ao chamar operações bloqueantes ou funções que explicitamente fazem yield.
- Desde a versão Go 1.14, foi adicionado suporte limitado para preempção, permitindo ao escalonador interromper uma goroutine se ela não ceder o controle por muito tempo.
Assim, a troca de contexto entre goroutines ocorre automaticamente e de forma transparente para o desenvolvedor, mas com algumas diferenças em relação aos sistemas operacionais clássicos.