Sobes.tech
Senior

Ինչպե՞ս դարձնել երկու worker()-ի կատարումը միաժամանակյա, փոխարենը հերթական (6 վայրկյան → 3 վայրկյան):

sobes.tech AI

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

Go լեզվում ֆունկցիաների համաժամանակյա կատարումը հնարավոր է օգտագործել goroutine-ներ: Եթե ունեք երկու worker() ֆունկցիաներ, որոնք ներկայումս կատարվում են հերթականությամբ և ընդհանուր առմամբ տևում են 6 վայրկյան, ապա դրանք տարբեր goroutine-ներում գործարկելով, նրանք կկատարվեն համաժամանակյա, և ընդհանուր ժամանակը կկրճատվի մոտավորապես մինչև 3 վայրկյան:

Օրինակ՝

func() {
    worker()
}()
func() {
    worker()
}()

// Երկու goroutine-ների ավարտին սպասելու համար օգտագործեք sync.WaitGroup
var wg sync.WaitGroup
wg.Add(2)
func() {
    defer wg.Done()
    worker()
}()
func() {
    defer wg.Done()
    worker()
}()
wg.Wait()

Այս կերպ, ֆունկցիաների գործարկումը goroutine-ներում և նրանց սինխրոնիզացումը WaitGroup-ով թույլ է տալիս նրանց կատարել համաժամանակյա։