Sobes.tech
Junior — Middle

Quando è consigliato utilizzare il meccanismo RWMutex nella programmazione per gestire l'accesso condiviso alle risorse?

sobes.tech AI

Risposta dell'AI

Il meccanismo RWMutex in Go è consigliato quando si ha una risorsa a cui possono accedere più lettori contemporaneamente, ma le scritture devono essere esclusive. RWMutex permette a più goroutine di leggere i dati contemporaneamente senza bloccarsi a vicenda, ma blocca l'accesso a tutti durante una scrittura.

Questo migliora le prestazioni in scenari con operazioni di lettura frequenti e operazioni di scrittura rare.

Esempio di utilizzo:

var mu sync.RWMutex
var data int

func readData() int {
    mu.RLock()         // blocco in lettura
    defer mu.RUnlock()
    return data
}

func writeData(val int) {
    mu.Lock()          // blocco esclusivo per scrittura
    defer mu.Unlock()
    data = val
}

Usa RWMutex quando:

  • La lettura avviene frequentemente e in parallelo.
  • La scrittura avviene raramente e richiede accesso esclusivo.

Se le operazioni di lettura e scrittura sono circa uguali in frequenza, o se la semplicità è importante, è meglio usare un Mutex normale.