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-ով թույլ է տալիս նրանց կատարել համաժամանակյա։