Junior — Middle
Защо функцията Context.WithTimeout връща две стойности и как се използват в контекста на управлението на тайм-аутове?
sobes.tech AI
Отговор от AI
Функцията context.WithTimeout в Go връща две стойности:
- Нов контекст (
Context), който автоматично се отменя след зададения таймаут. - Функция за отмена (
CancelFunc), която може да бъде извикана за предварително приключване на работата с контекста.
Използване:
- Новият контекст се използва за контрол на времето за изпълнение на операциите: ако времето изтече, контекстът се отменя и свързаните операции получават сигнал за отмена.
- Функцията за отмена се извиква за освобождаване на ресурсите, свързани с контекста, ако операцията приключи преди таймаута.
Пример:
timedCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel() // гарантира освобождаване на ресурсите
select {
case <-doWork(timedCtx):
fmt.Println("Работата е завършена")
case <-timedCtx.Done():
fmt.Println("Таймаут или отмена")
}
По този начин, върнатите стойности позволяват да се зададе ограничение по време и да се контролира отменянето на операциите.