Sobes.tech
Junior — Middle

Kako implementirati ograničenje vremena izvršenja operacije pomoću context.WithTimeout u Go?

sobes.tech АИ

Одговор од АИ

У језику Go, за ограничење времена извршавања операције често се користи контекст са временским ограничењем преко функције context.WithTimeout. Она враћа нови контекст и функцију за отказивање. Ако операција не заврши пре истека временског ограничења, контекст се аутоматски отказује.

Пример употребе:

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

select {
case result := <-someLongRunningOperation(ctx):
    fmt.Println("Операција завршена:", result)
case <-ctx.Done():
    fmt.Println("Истекло време:", ctx.Err())
}

Овде, someLongRunningOperation треба да прихвати ctx и периодично проверава ctx.Done() за правилно прекидање. Ово омогућава безбедно прекидање операције у случају истека времена.