Назад к вопросам
Junior — Middle
69
Как реализовать ограничение времени выполнения операции с помощью context.WithTimeout в Go?
Ответ от нейросети
sobes.tech AI
В Go для ограничения времени выполнения операции часто используют контекст с таймаутом через функцию context.WithTimeout. Она возвращает новый контекст и функцию отмены. Если операция не успевает завершиться до истечения таймаута, контекст автоматически отменяется.
Пример использования:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case result := <-someLongRunningOperation(ctx):
fmt.Println("Operation finished:", result)
case <-ctx.Done():
fmt.Println("Timeout exceeded:", ctx.Err())
}
Здесь someLongRunningOperation должна принимать ctx и периодически проверять ctx.Done() для корректного прерывания. Это позволяет безопасно прервать операцию по таймауту.