Sobes.tech
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ů.