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