Sobes.tech
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 vreme timeout od trenutka poziva. To znači da tajmer počinje sa pozivom.

  • WithDeadline(parent, deadline) kreira kontekst koji se otkazuje u tačno određenom trenutku deadline (tip time.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.