Junior — Middle
Go тилинде бардык балдар гуруутиндеринин иши бүткөнүн кантип аныктоого болот?
sobes.tech AI
AIден жооп
Goда, бардык балдар goroutine'леринин аяктоо жөнүндө аныктоо үчүн, адатта, sync.WaitGroup түрү менен синхрондоштуруу колдонулат.
Мисал:
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() // бардык goroutine'лер Done чакырганча күтөт
fmt.Println("Бардык goroutine'лер аяктады")
Ушул жол менен, WaitGroup негизги goroutine'ге бардык балдар goroutine'леринин аяктоосун күтүүгө мүмкүндүк берет.