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