Sobes.tech
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'леринин аяктоосун күтүүгө мүмкүндүк берет.