Sobes.tech
Junior — Middle

Akú úlohu zohráva metóda Context.Done pri riadení ukončenia asynchrónnych operácií?

sobes.tech AI

Odpoveď od AI

Metóda Context.Done() vráti kanál, ktorý sa zatvorí, keď sa kontext zruší alebo vyprší jeho čas. To umožňuje asynchrónnym operáciám detekovať signál ukončenia a správne sa prerušiť.

Napríklad v gorutine môžete sledovať tento kanál a ukončiť prácu pri zrušení kontextu:

ctx, cancel := context.WithCancel(context.Background())
go func() {
    select {
    case <-ctx.Done():
        // Kontext bol zrušený, ukončenie
        return
    case data := <-dataCh:
        // Spracovanie dát
    }
}()

// Neskôr zavoláme cancel() na zastavenie gorutiny
cancel()

Týmto spôsobom Context.Done() slúži ako signál pre bezpečné a načasované ukončenie asynchrónnych operácií.