Sobes.tech
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()-ду мезгил-мезгили менен текшериши керек. Бул операцияны убакыт өтүп кеткенде коопсуз токтотууга мүмкүндүк берет.