Sobes.tech
Junior — Middle

Ինչու է Context.WithTimeout ֆունկցիան վերադարձնում երկու արժեք և ինչպես են դրանք օգտագործվում ժամանակային սահմանափակումների կառավարման համատեքստում։

sobes.tech AI

Պատասխան AI-ից

Go լեզվում context.WithTimeout ֆունկցիան վերադարձնում է երկու արժեք:

  1. Նոր կոնտեքստ (Context), որը ավտոմատ կերպով չեղարկվում է նշված ժամանակահատվածի ավարտին:
  2. Չեղարկման ֆունկցիա (CancelFunc), որը կարող է կանչվել կոնտեքստի հետ աշխատանքը նախապես ավարտելու համար:

Օգտագործում:

  • Նոր կոնտեքստը օգտագործվում է գործողությունների կատարման ժամանակի վերահսկման համար՝ եթե ժամանակը սպառվի, կոնտեքստը չեղարկվում է և կապված գործողությունները ստանում են չեղարկման նշան:
  • Չեղարկման ֆունկցիան կանչվում է կոնտեքստի հետ կապված ռեսուրսների ազատման համար, եթե գործողությունը ավարտվել է ժամանակից շուտ:

Օրինակ՝

timedCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel() // ապահովում է ռեսուրսների ազատումը

select {
case <-doWork(timedCtx):
    fmt.Println("Աշխատանքը ավարտվեց")
case <-timedCtx.Done():
    fmt.Println("Ժամանակի ավարտ կամ չեղարկում")
}

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