Junior — Middle
Hogyan valósítható meg egy művelet futási idejének korlátozása a context.WithTimeout segítségével Go-ban?
sobes.tech MI
Válasz az MI-től
Go nyelven gyakran használnak időkorlátos kontextust az context.WithTimeout függvény segítségével az műveletek futási idejének korlátozására. Ez egy új kontextust és egy megszakítási függvényt ad vissza. Ha a művelet nem fejeződik be a timeout előtt, a kontextus automatikusan megszakad.
Használati példa:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case result := <-someLongRunningOperation(ctx):
fmt.Println("Művelet befejezve:", result)
case <-ctx.Done():
fmt.Println("Időkorlát túllépve:", ctx.Err())
}
Itt a someLongRunningOperation-nak fogadnia kell a ctx-et, és rendszeresen ellenőriznie kell a ctx.Done()-t a helyes megszakítás érdekében. Ez lehetővé teszi a művelet biztonságos megszakítását időkorlát esetén.