Sobes.tech
Junior — Middle

Miért ad vissza két értéket a Context.WithTimeout függvény, és hogyan használják őket az időkorlátok kezelésében?

sobes.tech MI

Válasz az MI-től

A context.WithTimeout Go nyelven két értéket ad vissza:

  1. Az új kontextus (Context), amely automatikusan megszakad a megadott időtartam elteltével.
  2. A megszakítási függvény (CancelFunc), amit hívhatunk a kontextussal végzett munka korai befejezéséhez.

Használat:

  • Az új kontextus a műveletek végrehajtási idejének ellenőrzésére szolgál: ha az idő lejár, a kontextus megszakad, és a kapcsolódó műveletek megszakítási jelet kapnak.
  • A megszakítási függvényt a kontextussal kapcsolódó erőforrások felszabadítására hívják, ha a művelet a timeout előtt befejeződik.

Példa:

timedCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel() // biztosítja az erőforrások felszabadítását

select {
case <-doWork(timedCtx):
    fmt.Println("Munka befejeződött")
case <-timedCtx.Done():
    fmt.Println("Időkorlát vagy megszakítás")
}

Így a visszaadott értékek lehetővé teszik az időkorlát beállítását és a műveletek megszakításának ellenőrzését.