Junior — Middle
Как да спрем изпълнението на горутина след изтичане на зададено време, ако резултатът не е получен?
sobes.tech AI
Отговор от 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():
// таймаут или отмена
}
По този начин, ако резултатът не пристигне навреме, изпълнението може да бъде прекъснато и да се обработи таймаутът.