Sobes.tech
Назад к вопросам
Junior — Middle
75

Каким образом можно остановить выполнение горутины по истечении заданного времени, если результат не был получен?

Компании, где спрашивали
IDT

Ответ от нейросети

sobes.tech AI

В Go для остановки выполнения горутины по истечении заданного времени обычно используют select с таймером или контекст с таймаутом.

Пример с time.After:

select {
case result := <-ch:
    // обработать результат
case <-time.After(2 * time.Second):
    // таймаут — результат не получен за 2 секунды
}

Пример с контекстом:

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

select {
case result := <-ch:
    // обработать результат
case <-ctx.Done():
    // таймаут или отмена
}

Таким образом, если результат не приходит вовремя, выполнение можно прервать и обработать таймаут.