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