Junior — Middle
Go tilida barcha bolalar goroutinlari bajarilishini qanday aniqlash mumkin?
sobes.tech AI
AIdan javob
Go'da, barcha bolalar goroutinlarining tugashini aniqlash uchun odatda sync.WaitGroup turidan foydalanib sinxronizatsiya qilinadi.
Misol:
var wg sync.WaitGroup
wg.Add(3) // 3 ta goroutinani kutamiz
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // tugashini signal qilamiz
// goroutinning ishlashi
fmt.Println("Goroutine", id, "tugadi")
}(i)
}
wg.Wait() // barcha goroutinlar Done chaqirguncha kutamiz
fmt.Println("Barcha goroutinlar tugadi")
Shu tarzda, WaitGroup asosiy goroutine'ga barcha bolalar goroutinlarining tugashini kutishga imkon beradi.