Sobes.tech
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.