Junior — Middle
Как да реализирате ограничение на времето за изпълнение на операция с помощта на context.WithTimeout в Go?
sobes.tech AI
Отговор от AI
В езика 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() за правилно прекъсване. Това позволява безопасно прекъсване на операцията при изтичане на таймаута.