Sobes.tech
Junior — Middle

Ի՞նչ գործառույթներ է տրամադրում WaitGroup կառուցվածքը Go լեզվում goroutine-ների սինխրոնիզացման համար։

sobes.tech AI

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

Go լեզվում sync.WaitGroup կառուցվածքը օգտագործվում է մի քանի goroutine-ների սինխրոնիզացման համար, թույլ տալով հիմնական goroutine-ին սպասել մյուսների ավարտին:

WaitGroup-ի հիմնական մեթոդները՝

  • Add(delta int) — ավելացնում կամ նվազեցնում է սպասվող goroutine-ների հաշվիչը։ Հաճախ կանչվում է goroutine-ների մեկնարկից առաջ։

  • Done() — նվազեցնում է հաշվիչը 1-ով, կանչվում է goroutine-ի աշխատանքի ավարտին։

  • Wait() — կասեցնում է գործարկումը մինչև հաշվիչը դառնա զրո։

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

var wg sync.WaitGroup

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

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

wg.Wait() // սպասում ենք բոլոր goroutine-ների ավարտին
fmt.Println("Բոլոր goroutine-ները ավարտվեցին")

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