Junior
Ինչպե՞ս ծրագրավորման լեզվում (Go) հետևել, որ բոլոր գործարկվող հոսքերը ավարտվել են և գլխավոր հոսքը կարող է օգտվել արդյունքներից։
sobes.tech AI
Պատասխան AI-ից
Go լեզվում սովորաբար օգտագործվում է sync.WaitGroup տիպը՝ բոլոր աշխատող goroutine-ների ավարտը հետևելու համար: Դա թույլ է տալիս գլխավոր հոսքին սպասել մինչև բոլոր goroutine-ները ավարտվեն:
Օգտագործման օրինակ:
var wg sync.WaitGroup
wg.Add(3) // սպասում ենք 3 goroutine-ի
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // նշում է goroutine-ի ավարտը
// goroutine-ի աշխատանքը
fmt.Println("Goroutine", id, "ավարտվեց")
}(i)
}
wg.Wait() // գլխավոր հոսքը կլոկավորվում է մինչև wg հաշիվը հասնի 0-ի
fmt.Println("Բոլոր goroutine-ները ավարտվեցին, արդյունքները կարող են օգտագործվել")
Այս կերպ, WaitGroup թույլ է տալիս սինխրոնիզացնել կատարման գործընթացը և ապահովում, որ վերահսկող հոսքը կսպասի բոլոր հարթակային առաջադրանքների ավարտին։