Junior — Middle
Go тилинде `context.WithTimeout` аркылуу операциянын иштөө мөөнөтүн чектөө кандай ишке ашырылат?
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()-ду мезгил-мезгили менен текшериши керек. Бул операцияны убакыт өтүп кеткенде коопсуз токтотууга мүмкүндүк берет.