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-ը օգնում է համաժամանակեցնել հարյուրամյա կատարմանը և ապահովում է, որ ծրագիրը չմեկնարկի վաղաժամ։