Senior
Hai deciso di scrivere WaitGroup perché è apparso un canale o perché hai deciso di scrivere goroutine per qualcosa?
sobes.tech AI
Risposta dell'AI
WaitGroup in Go viene usato per aspettare il completamento di un gruppo di goroutine.
Se hai diverse goroutine che eseguono compiti in parallelo e devi aspettare che finiscano prima di continuare, WaitGroup è uno strumento utile.
Canali e goroutine sono meccanismi diversi. Un canale serve per comunicare e sincronizzare tra goroutine, mentre WaitGroup serve per aspettare che finiscano.
Ad esempio, se hai goroutine che eseguono compiti e vuoi aspettare che tutte finiscano, usi WaitGroup:
var wg sync.WaitGroup
wg.Add(3) // aspettiamo 3 goroutine
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done()
// lavoro della goroutine
fmt.Println("Goroutine", id, "terminata")
}(i)
}
wg.Wait() // aspettiamo che tutte le goroutine finiscano
In questo modo, WaitGroup viene usato proprio perché ci sono goroutine da sincronizzare alla loro fine, non a causa della presenza di canali.