Junior — Middle
Qual é o papel do método Context.Done na gestão do encerramento de operações assíncronas?
sobes.tech IA
Resposta da IA
O método Context.Done() devolve um canal que é fechado quando o contexto é cancelado ou o seu tempo de validade expira. Isto permite que operações assíncronas detectem o sinal de término e sejam corretamente interrompidas.
Por exemplo, numa goroutine, pode-se escutar este canal e terminar o trabalho ao cancelar o contexto:
ctx, cancel := context.WithCancel(context.Background())
go func() {
select {
case <-ctx.Done():
// O contexto foi cancelado, terminar
return
case data := <-dataCh:
// Processar dados
}
}()
// Mais tarde, chama-se cancel() para parar a goroutine
cancel()
Assim, Context.Done() serve como um sinal para o encerramento seguro e oportuno de operações assíncronas.