Junior — Middle
Koja je razlika između korišćenja funkcije WithTimeout i WithDeadline u kontekstu kontrole vremena izvršavanja?
sobes.tech АИ
Одговор од АИ
Funkcije WithTimeout i WithDeadline u Go koriste se za kreiranje konteksta sa vremenskim ograničenjem, ali se razlikuju u načinu na koji se to ograničenje postavlja:
-
WithTimeout(parent, timeout)kreira kontekst koji se automatski otkazuje nakon što protekne vremetimeoutod trenutka poziva. To znači da tajmer počinje sa pozivom. -
WithDeadline(parent, deadline)kreira kontekst koji se otkazuje u tačno određenom trenutkudeadline(tiptime.Time). Ovo omogućava precizno određivanje vremena kada će kontekst isteći.
Primer:
ctx1, cancel1 := context.WithTimeout(context.Background(), 5*time.Second)
// ctx1 će biti otkazan za 5 sekundi od sada
deadline := time.Now().Add(5 * time.Second)
ctx2, cancel2 := context.WithDeadline(context.Background(), deadline)
// ctx2 će biti otkazan tačno u trenutku deadline
Dakle, WithTimeout je koristan kada je potrebno odrediti trajanje, a WithDeadline kada je važan tačan trenutak u vremenu.