Sobes.tech
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.