Sobes.tech
Junior — Middle

Jak implementovat omezení doby běhu operace pomocí context.WithTimeout v Go?

sobes.tech AI

Odpověď od AI

V jazyce Go se často používá kontext s časovým limitem pomocí funkce context.WithTimeout k omezení doby běhu operace. Tato funkce vrací nový kontext a funkci pro jeho zrušení. Pokud operace nedokončí před vypršením časového limitu, kontext se automaticky zruší.

Příklad použití:

ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()

select {
case result := <-someLongRunningOperation(ctx):
    fmt.Println("Operace dokončena:", result)
case <-ctx.Done():
    fmt.Println("Vypršel časový limit:", ctx.Err())
}

Zde someLongRunningOperation musí přijímat ctx a pravidelně kontrolovat ctx.Done() pro správné přerušení. To umožňuje bezpečně přerušit operaci při vypršení časového limitu.