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()-ро санҷад барои қатъ кардани дуруст. Ин имкон медиҳад, ки амалиётро бехатар дар ҳолати тамом шудани мӯҳлат қатъ кард.