Sobes.tech
Junior — Middle

Ի՞նչ է Wait Group կառուցվածքի նպատակը goroutine-ների սինխրոնիզացիայում։

sobes.tech AI

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

Go լեզվում WaitGroup-ը օգտագործվում է մի քանի goroutine-ների սինխրոնիզացման համար: Այն թույլ է տալիս հիմնական goroutine-ին (կամ ցանկացած այլ) սպասել goroutine-ների խմբի ավարտին:

WaitGroup-ի հիմնական նպատակն է հետևել ակտիվ 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() // սպասում ենք մինչև հաշվիչը դառնա 0
fmt.Println("Բոլոր goroutine-ները ավարտվեցին")

Այսպիսով, WaitGroup-ը օգնում է համաժամանակեցնել հորիզոնական կատարմանը և ապահովում, որ ծրագիրը չի շարունակվի մինչև բոլոր անհրաժեշտ goroutine-ները չավարտվեն։