Junior — Middle
Como é que uma goroutine reconhece que a sua execução foi cancelada através do contexto?
sobes.tech IA
Resposta da IA
A goroutine em Go reconhece a cancelamento através do contexto (context.Context) usando o canal Done(), que é fechado quando ocorre o cancelamento.
Quando um contexto com cancelamento é criado (por exemplo, usando context.WithCancel ou context.WithTimeout), a goroutine pode escutar o canal ctx.Done():
ctx, cancel := context.WithCancel(context.Background())
// Iniciar goroutine
go func() {
select {
case <-ctx.Done():
// O contexto foi cancelado, deve-se terminar
fmt.Println("Goroutine cancelada")
return
default:
// Executar o trabalho principal
}
}()
// Cancelar o contexto
cancel()
Dessa forma, a goroutine fica sabendo do cancelamento verificando o canal Done() e pode encerrar seu trabalho corretamente.