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:
- Az új kontextus (
Context), amely automatikusan megszakad a megadott időtartam elteltével. - 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.