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í.