Sobes.tech
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():
    // таймаут или отмена
}

По този начин, ако резултатът не пристигне навреме, изпълнението може да бъде прекъснато и да се обработи таймаутът.