Sobes.tech
Junior — Middle

İcra vaxtının idarə olunması kontekstində WithTimeout funksiyasının WithDeadline ilə fərqi nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Go'da WithTimeoutWithDeadline funksiyaları zaman məhdudiyyətli kontekst yaratmaq üçün istifadə olunur, lakin bu məhdudiyyətin təyin olunma üsulu ilə fərqlənir:

  • WithTimeout(parent, timeout) cari vaxtdan timeout müddət sonra avtomatik olaraq ləğv olunan kontekst yaradır. Yəni, timer çağırış zamanı başlayır.

  • WithDeadline(parent, deadline) müəyyən bir vaxtda, deadline (tip time.Time) olan kontekst yaradır. Bu, kontekstin tam olaraq nə vaxt bitəcəyini təyin etməyə imkan verir.

Nümunə:

ctx1, cancel1 := context.WithTimeout(context.Background(), 5*time.Second)
// ctx1, indi 5 saniyə sonra ləğv olunacaq

deadline := time.Now().Add(5 * time.Second)
ctx2, cancel2 := context.WithDeadline(context.Background(), deadline)
// ctx2, dəqiq deadline vaxtında ləğv olunacaq

Beləliklə, WithTimeout müddət təyin etmək üçün əlverişlidir, WithDeadline isə müəyyən bir vaxtda vacib olan hallarda istifadə olunur.