Junior — Middle
Como é que a goroutine sabe que recebeu um sinal de término através do contexto?
sobes.tech IA
Resposta da IA
A goroutine recebe o sinal de finalização através de um contexto usando um canal, que fornece o objeto context.Context. Normalmente, usa-se o método Done(), que retorna um canal que se fecha quando o contexto é cancelado. A goroutine pode ouvir esse canal em um ciclo ou select e reagir ao seu fechamento, o que indica um sinal de finalização ou cancelamento da operação.
Exemplo:
ctx, cancel := context.WithCancel(context.Background())
go func() {
select {
case <-ctx.Done():
// O contexto foi cancelado, encerrando
fmt.Println("Goroutine finalizada")
return
// outros casos
}
}()
// mais tarde, chamamos cancel() para sinalizar o encerramento
cancel()