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:
- Novi kontekst (
Context), koji se automatski otkazuje nakon isteka zadanog vremena. - 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.