Sobes.tech
Junior — Middle

Kā īstenot operācijas izpildes laika ierobežojumu, izmantojot context.WithTimeout Go valodā?

sobes.tech AI

Atbilde no AI

Go valodā bieži izmanto kontekstu ar laika ierobežojumu, izmantojot funkciju context.WithTimeout, lai ierobežotu operācijas izpildes laiku. Tā atgriež jaunu kontekstu un funkciju to atcelt. Ja operācija nebeidzas pirms laika limita beigām, konteksts automātiski tiek atcelts.

Piemērs lietošanai:

ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()

select {
case result := <-someLongRunningOperation(ctx):
    fmt.Println("Operācija pabeigta:", result)
case <-ctx.Done():
    fmt.Println("Laika limits pārsniegts:", ctx.Err())
}

Šeit someLongRunningOperation jāpieņem ctx un regulāri jāpārbauda ctx.Done() pareizai pārtraukšanai. Tas ļauj droši pārtraukt operāciju, ja ir pārsniegts laika limits.