Sobes.tech
Назад к вопросам
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() для корректного прерывания. Это позволяет безопасно прервать операцию по таймауту.