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:
- Nový kontext (
Context), který je automaticky zrušen po uplynutí stanovené doby. - 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í.