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("Времето изтече или е отменено")
}
По този начин, върнатите стойности позволяват да се зададе ограничение по време и да се контролира отменянето на операциите.