Junior — Middle
Miks funktsioon Context.WithTimeout tagastab kaks väärtust ja kuidas neid kasutatakse ajapiirangute haldamisel?
sobes.tech AI
Vastus AI-lt
Funktsioon context.WithTimeout Go keeles tagastab kaks väärtust:
- Uue konteksti (
Context), mis automaatselt tühistatakse pärast määratud aja möödumist. - Tühistamise funktsiooni (
CancelFunc), mida saab kutsuda enne tähtaega töö lõpetamiseks kontekstiga.
Kasutus:
- Uus kontekst kasutatakse operatsioonide täitmise aja kontrollimiseks: kui aeg lõpeb, kontekst tühistatakse ja seotud operatsioonid saavad tühistamissignaali.
- Tühistamise funktsiooni kutsutakse välja ressursside vabastamiseks, kui operatsioon lõpeb enne tähtaega.
Näide:
timedCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel() // tagab ressursside vabastamise
select {
case <-doWork(timedCtx):
fmt.Println("Töö lõpetatud")
case <-timedCtx.Done():
fmt.Println("Aeg lõppes või tühistati")
}
Sellisel viisil võimaldavad tagastatud väärtused määrata ajapiirangu ja kontrollida operatsioonide tühistamist.