Sobes.tech
Junior

Ինչպե՞ս ծրագրավորման լեզվում (Go) հետևել, որ բոլոր գործարկվող հոսքերը ավարտվել են և գլխավոր հոսքը կարող է օգտվել արդյունքներից։

sobes.tech AI

Պատասխան AI-ից

Go լեզվում սովորաբար օգտագործվում է sync.WaitGroup տիպը՝ բոլոր աշխատող goroutine-ների ավարտը հետևելու համար: Դա թույլ է տալիս գլխավոր հոսքին սպասել մինչև բոլոր goroutine-ները ավարտվեն:

Օգտագործման օրինակ:

var wg sync.WaitGroup

wg.Add(3) // սպասում ենք 3 goroutine-ի

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // նշում է goroutine-ի ավարտը
        // goroutine-ի աշխատանքը
        fmt.Println("Goroutine", id, "ավարտվեց")
    }(i)
}

wg.Wait() // գլխավոր հոսքը կլոկավորվում է մինչև wg հաշիվը հասնի 0-ի
fmt.Println("Բոլոր goroutine-ները ավարտվեցին, արդյունքները կարող են օգտագործվել")

Այս կերպ, WaitGroup թույլ է տալիս սինխրոնիզացնել կատարման գործընթացը և ապահովում, որ վերահսկող հոսքը կսպասի բոլոր հարթակային առաջադրանքների ավարտին։