Sobes.tech
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():
    // ժամանակային սահմանափակում կամ չեղարկում
}

Այս կերպ, եթե արդյունքը ժամանակին չգա, կատարումը կարող է ընդհատվել և ժամանակային սահմանափակումը կառավարել։