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 zamandantimeoutsü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(tiptime.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.