Sobes.tech
Junior — Middle

Ako implementovať obmedzenie času vykonávania operácie pomocou context.WithTimeout v Go?

sobes.tech AI

Odpoveď od AI

V jazyku Go sa často používa kontext s časovým limitom pomocou funkcie context.WithTimeout na obmedzenie doby behu operácie. Táto funkcia vracia nový kontext a funkciu na jeho zrušenie. Ak operácia nedokončí pred uplynutím časového limitu, kontext sa automaticky zruší.

Príklad použitia:

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

select {
case result := <-someLongRunningOperation(ctx):
    fmt.Println("Operácia dokončená:", result)
case <-ctx.Done():
    fmt.Println("Vypršal čas:", ctx.Err())
}

Tu someLongRunningOperation musí prijímať ctx a pravidelne kontrolovať ctx.Done() pre správne prerušenie. To umožňuje bezpečne prerušiť operáciu pri vypršaní času.