Junior — Middle
Jaký je cíl používání podřízených kontextů v systému?
sobes.tech AI
Odpověď od AI
V jazyce Go jsou podřazené kontexty (child contexts) vytvářeny z rodičovských kontextů pomocí funkcí context.WithCancel, context.WithTimeout nebo context.WithDeadline. Cílem používání podřazených kontextů:
- Řízení životnosti operací: podřazený kontext může být zrušen nezávisle na rodičovském, což umožňuje kontrolu provádění konkrétních úkolů.
- Přenos signálů zrušení: pokud je rodičovský kontext zrušen, jsou zrušeny všechny podřazené kontexty, což zajišťuje kaskádové ukončení souvisejících operací.
- Přidání omezení: například nastavení časového limitu nebo lhůty pro podřazený kontext bez změny rodičovského.
Příklad:
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
// ctx — podřazený kontext s časovým limitem 5 sekund
go func(ctx context.Context) {
select {
case <-time.After(10 * time.Second):
fmt.Println("Operace dokončena")
case <-ctx.Done():
fmt.Println("Operace zrušena nebo vypršela")
}
}(ctx)
// cancel() lze volat pro ruční zrušení podřazeného kontextu
Tímto způsobem umožňují podřazené kontexty flexibilně řídit dobu života a zrušení operací v hierarchii úkolů.