Junior — Middle
Milyen funkciókat biztosít a WaitGroup szerkezet a Go nyelvben a goroutine-ok szinkronizálására?
sobes.tech MI
Válasz az MI-től
A Go nyelvben a sync.WaitGroup szerkezetet több goroutine szinkronizálására használják, lehetővé téve a fő goroutine számára, hogy várjon mások befejezésére.
A WaitGroup főbb módszerei:
-
Add(delta int)— növeli vagy csökkenti a várt goroutine-ok számát. Általában a goroutine-ok indítása előtt hívják meg. -
Done()— csökkenti a számlálót 1-gyel, a goroutine munka végén hívják. -
Wait()— blokkolja a végrehajtást, amíg a számláló el nem éri a nullát.
Használati példa:
var wg sync.WaitGroup
wg.Add(3) // 3 goroutine várása
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // befejezés jelzése
fmt.Println("Goroutine", id)
}(i)
}
wg.Wait() // várunk minden goroutine befejezésére
fmt.Println("Minden goroutine befejeződött")
Így a WaitGroup segít a párhuzamos végrehajtás koordinálásában, és biztosítja, hogy a program ne érjen véget korábban.