Sobes.tech
Junior

Quali altri metodi di sincronizzazione delle goroutine esistono in Go oltre ai canali?

sobes.tech AI

Risposta dell'AI

Oltre ai canali, in Go, per sincronizzare le goroutine si possono usare:

  • sync.WaitGroup — permette di attendere la fine di un gruppo di goroutine.
  • sync.Mutex — mutex per proteggere risorse condivise da accessi simultanei.
  • sync.RWMutex — mutex con divisione tra lettura e scrittura.
  • sync.Cond — variabile condizionale per notificare alle goroutine l'avvenimento di un evento.
  • Operazioni atomiche del pacchetto sync/atomic — per operazioni atomiche su variabili senza blocchi.

Esempio di utilizzo di WaitGroup:

var wg sync.WaitGroup
wg.Add(1)
go func() {
    defer wg.Done()
    // lavoro della goroutine
}()
wg.Wait() // aspettiamo che tutte le goroutine finiscano