Sobes.tech
Junior — Middle

Çalışma süresi kontrolü bağlamında WithTimeout fonksiyonunun WithDeadline fonksiyonundan farkı nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go'da WithTimeout ve WithDeadline fonksiyonları, zaman sınırıyla bir bağlam oluşturmak için kullanılır, ancak bu sınırın belirlenme şekliyle farklılık gösterir:

  • WithTimeout(parent, timeout) mevcut zamandan timeout süresi sonra otomatik olarak iptal edilen bir bağlam oluşturur. Yani, zamanlayıcı çağrı anında başlar.

  • WithDeadline(parent, deadline) belirli bir zamanda, deadline (tip time.Time) olan bir bağlam oluşturur. Bu, bağlamın tam olarak ne zaman sona ereceğini belirlemeye olanak tanır.

Örnek:

ctx1, cancel1 := context.WithTimeout(context.Background(), 5*time.Second)
// ctx1, şu andan itibaren 5 saniye içinde iptal edilir

deadline := time.Now().Add(5 * time.Second)
ctx2, cancel2 := context.WithDeadline(context.Background(), deadline)
// ctx2, tam olarak deadline zamanında iptal edilir

Bu nedenle, WithTimeout süre belirlemek için kullanışlıdır, WithDeadline ise belirli bir zaman noktasına odaklanır.