Sobes.tech
Junior — Middle

Чӣ гуна маҳдудияти вақти иҷрои амалиёт бо истифода аз context.WithTimeout дар Go амалишавӣ мешавад?

sobes.tech AI

Ҷавоб аз AI

Дар забони Go, барои маҳдуд кардани вақти иҷрои як амалиёт, аксар вақт аз контекст бо мӯҳлати муайян истифода мешавад, тавассути функсияи context.WithTimeout. Ин функсия як контексти нав ва функсияи бекориро бармегардонад. Агар амалиёт пеш аз тамом шудани мӯҳлати муайян анҷом наёбад, контекст автоматӣ бекор мешавад.

Маслиҳати истифода:

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

select {
case result := <-someLongRunningOperation(ctx):
    fmt.Println("Амалиёт анҷом ёфт:", result)
case <-ctx.Done():
    fmt.Println("Мӯҳлати тамом шуд:", ctx.Err())
}

Ин ҷо, someLongRunningOperation бояд ctx-ро қабул кунад ва ба таври мунтазам ctx.Done()-ро санҷад барои қатъ кардани дуруст. Ин имкон медиҳад, ки амалиётро бехатар дар ҳолати тамом шудани мӯҳлат қатъ кард.