Junior — Middle
Ինչպե՞ս կարելի է կանգնեցնել goroutine-ի գործարկումը նշված ժամանակի ավարտից հետո, եթե արդյունք չի ստացվել։
sobes.tech AI
Պատասխան AI-ից
Go լեզվում, որպեսզի կանգնեցնեք goroutine-ի կատարումը նշված ժամանակից հետո, սովորաբար օգտագործվում է select հետ ժամացույց կամ կոնտեքստ ժամանակային սահմանափակմամբ:
time.After-ով օրինակ:
select {
case result := <-ch:
// արդյունքի մշակումը
case <-time.After(2 * time.Second):
// ժամանակային սահմանափակում — արդյունքը չի ստացվել 2 վայրկյանում
}
կոնտեքստով օրինակ:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case result := <-ch:
// արդյունքի մշակումը
case <-ctx.Done():
// ժամանակային սահմանափակում կամ չեղարկում
}
Այս կերպ, եթե արդյունքը ժամանակին չգա, կատարումը կարող է ընդհատվել և ժամանակային սահմանափակումը կառավարել։