Sobes.tech
Middle+

Parlami di WaitGroup in Go.

sobes.tech AI

Risposta dell'AI

In Go, sync.WaitGroup viene utilizzato per attendere il completamento di un gruppo di goroutine. È un modo comodo per sincronizzare compiti paralleli.

Metodi principali:

  • Add(int) — aumenta il contatore delle goroutine attese.
  • Done() — diminuisce il contatore, chiamato quando una goroutine termina.
  • Wait() — blocca l'esecuzione finché il contatore non diventa zero.

Esempio di utilizzo:

var wg sync.WaitGroup

wg.Add(2) // aspettiamo 2 goroutine

go func() {
    defer wg.Done()
    // lavoro della prima goroutine
}()

go func() {
    defer wg.Done()
    // lavoro della seconda goroutine
}()

wg.Wait() // aspettiamo che entrambe finiscano

In questo modo, WaitGroup aiuta a controllare il completamento di operazioni parallele.