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()-ը՝ ճիշտ ընդհատելու համար: Սա թույլ է տալիս անվտանգ ընդհատել գործողությունը ժամանակային սահմանափակման դեպքում։