Sobes.tech
Junior — Middle

Jakou roli hraje metoda Context.Done při řízení ukončení asynchronních operací?

sobes.tech AI

Odpověď od AI

Metoda Context.Done() vrací kanál, který se uzavře, když je kontext zrušen nebo vyprší jeho doba platnosti. To umožňuje asynchronním operacím detekovat signál ukončení a správně se přerušit.

Například v gorutině lze sledovat tento kanál a ukončit práci při zrušení kontextu:

ctx, cancel := context.WithCancel(context.Background())
go func() {
    select {
    case <-ctx.Done():
        // Kontext byl zrušen, ukončení
        return
    case data := <-dataCh:
        // Zpracování dat
    }
}()

// Později zavoláme cancel() pro zastavení gorutiny
cancel()

Tímto způsobem Context.Done() slouží jako signál pro bezpečné a včasné ukončení asynchronních operací.