Sobes.tech
Junior — Middle

Proč funkce Context.WithTimeout vrací dvě hodnoty a jak jsou v kontextu správy časových limitů používány?

sobes.tech AI

Odpověď od AI

Funkce context.WithTimeout v jazyce Go vrací dvě hodnoty:

  1. Nový kontext (Context), který je automaticky zrušen po uplynutí stanovené doby.
  2. Funkci pro zrušení (CancelFunc), kterou lze zavolat pro předčasné ukončení práce s kontextem.

Použití:

  • Nový kontext se používá ke kontrole doby běhu operací: pokud čas vyprší, kontext je zrušen a s ním spojené operace obdrží signál zrušení.
  • Funkce zrušení se volá pro uvolnění zdrojů spojených s kontextem, pokud operace skončila dříve než časový limit.

Příklad:

timedCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel() // zajišťuje uvolnění zdrojů

select {
case <-doWork(timedCtx):
    fmt.Println("Práce dokončena")
case <-timedCtx.Done():
    fmt.Println("Vypršel čas nebo bylo zrušeno")
}

Tímto způsobem umožňují vrácené hodnoty stanovit časové omezení a řídit zrušení operací.