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