Junior — Middle
A programja megvalósítása során használta a waitgroup szinkronizációs mechanizmust?
sobes.tech MI
Válasz az MI-től
Igen, Go nyelvben a sync.WaitGroup mechanizmusát gyakran használják több goroutine szinkronizálására. Lehetővé teszi a fő goroutine számára, hogy várjon egy párhuzamos feladatok halmazának befejezésére.
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.Printf("Goroutine %d fut\n", id)
// valamilyen munka
}(i)
}
wg.Wait() // várunk, amíg minden Done hívás megtörténik
fmt.Println("Minden goroutine befejeződött")
Így a WaitGroup segít a párhuzamosság helyes kezelésében, és garantálja, hogy a program nem fog korábban befejeződni.