Junior — Middle
Quali metodi vengono utilizzati per garantire la coerenza dei dati quando si lavora con più thread o goroutine?
sobes.tech AI
Risposta dell'AI
Per garantire la coerenza dei dati durante l'uso di più thread o goroutine in Go, vengono utilizzati i seguenti metodi:
-
Mutex (sync.Mutex) — bloccano l'accesso ai dati condivisi, consentendo a un solo thread o goroutine di modificare i dati alla volta.
-
Canali (channels) — permettono di trasmettere dati in modo sicuro tra goroutine, garantendo sincronizzazione e scambio di messaggi.
-
Pacchetto sync/atomic — fornisce operazioni atomiche per lavorare con tipi di dati primitivi senza blocchi.
Esempio di utilizzo di un mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Utilizzo di canali per il trasferimento di dati:
ch := make(chan int)
go func() {
ch <- 42
}()
value := <-ch
La scelta del metodo dipende dal compito specifico e dai requisiti di prestazioni e praticità.