Sobes.tech
Junior — Middle

Care este rolul metodei Context.Done în gestionarea finalizării operațiunilor asincrone?

sobes.tech AI

Răspuns de la AI

Metoda Context.Done() returnează un canal care se închide atunci când contextul este anulat sau timpul său expiră. Acest lucru permite operațiunilor asincrone să detecteze semnalul de finalizare și să se întrerupă corect.

De exemplu, într-o goroutine, poți asculta acest canal și să finalizezi munca la anularea contextului:

ctx, cancel := context.WithCancel(context.Background())
go func() {
    select {
    case <-ctx.Done():
        // Contextul a fost anulat, se finalizează
        return
    case data := <-dataCh:
        // Procesarea datelor
    }
}()

// Mai târziu, se apelează cancel() pentru a opri goroutine-ul
cancel()

Astfel, Context.Done() servește ca un semnal pentru finalizarea sigură și oportună a operațiunilor asincrone.