Sobes.tech
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:

  1. Uue konteksti (Context), mis automaatselt tühistatakse pärast määratud aja möödumist.
  2. 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.