Sobes.tech
Junior — Middle

El tudnád magyarázni, hogyan valósul meg a szinkronizáció a Wait Group segítségével Go-ban?

sobes.tech MI

Válasz az MI-től

Go nyelvben a szinkronizáció a WaitGroup segítségével valósul meg, amely a sync csomagból származó struktúrán keresztül lehetővé teszi egy goroutine-ok csoportjának befejezésének várását.

Főbb módszerek:

  • Add(int) — növeli a várt goroutine-ok számát.
  • Done() — csökkenti a számlálót, a goroutine befejezésekor hívódik.
  • Wait() — blokkolja a végrehajtást, amíg a számláló el nem éri a nullát.

Példa:

var wg sync.WaitGroup

wg.Add(2) // két goroutine várása

go func() {
    defer wg.Done()
    // az első goroutine munkája
}()

go func() {
    defer wg.Done()
    // a második goroutine munkája
}()

wg.Wait() // várunk mindkét goroutine befejezésére

Így a WaitGroup hatékonyan szinkronizálja több párhuzamos feladat végrehajtását, bonyolult zárolási mechanizmusok használata nélkül.