Sobes.tech
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:

  1. Yeni kontekst (Context), müəyyən edilmiş vaxt keçdikdən sonra avtomatik olaraq ləğv edilir.
  2. 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.