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