Sobes.tech
Junior — Middle

Zašto funkcija Context.WithTimeout vraća dve vrednosti i kako se one koriste u kontekstu upravljanja vremenskim ograničenjima?

sobes.tech АИ

Одговор од АИ

Funkcija context.WithTimeout u Go jeziku vraća dve vrednosti:

  1. Novi kontekst (Context), koji se automatski otkazuje nakon isteka zadanog vremena.
  2. Funkcija za otkazivanje (CancelFunc), koja se može pozvati za prethodno završavanje rada sa kontekstom.

Upotreba:

  • Novi kontekst se koristi za kontrolu vremena izvršavanja operacija: ako vreme istekne, kontekst se otkazuje i povezane operacije dobijaju signal otkazivanja.
  • Funkcija za otkazivanje se poziva za oslobađanje resursa povezanih sa kontekstom, ako je operacija završena pre vremena isteka.

Primer:

timedCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel() // garantuje oslobađanje resursa

select {
case <-doWork(timedCtx):
    fmt.Println("Rad je završen")
case <-timedCtx.Done():
    fmt.Println("Vreme isteklo ili otkazano")
}

Na ovaj način, vraćene vrednosti omogućavaju postavljanje vremenskog ograničenja i kontrolu otkazivanja operacija.