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