Junior — Middle
Context.WithTimeout funksiyası niyə iki dəyər qaytarır və onlar vaxt aşımını idarə etmək kontekstində necə istifadə olunur?
sobes.tech Süni İntellekt
AI-dan cavab
Go dilində context.WithTimeout funksiyası iki dəyər qaytarır:
- Yeni kontekst (
Context), müəyyən edilmiş vaxt keçdikdən sonra avtomatik olaraq ləğv edilir. - Ləğv etmə funksiyası (
CancelFunc), onu kontekstlə işləməyi əvvəlcədən sonlandırmaq üçün çağırmaq olar.
İstifadə:
- Yeni kontekst əməliyyatların icra vaxtını idarə etmək üçün istifadə olunur: vaxt keçdikdə, kontekst ləğv edilir və əlaqəli əməliyyatlar ləğv siqnalı alır.
- Ləğv etmə funksiyası, əgər əməliyyat vaxt keçmədən əvvəl başa çatıbsa, resursları azad etmək üçün çağırılır.
Nümunə:
timedCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel() // resursların azad olunmasını təmin edir
select {
case <-doWork(timedCtx):
fmt.Println("İş tamamlandı")
case <-timedCtx.Done():
fmt.Println("Vaxt keçdi və ya ləğv edildi")
}
Bu şəkildə, qaytarılan dəyərlər vaxt məhdudiyyətini təyin etməyə və əməliyyatların ləğvini idarə etməyə imkan verir.