Sobes.tech
Junior — Middle

Qual è la funzione del tipo di sincronizzazione RWMutex nel linguaggio di programmazione?

sobes.tech AI

Risposta dell'AI

Nel linguaggio Go, il tipo RWMutex (Mutex di Lettura-Scrittura) viene utilizzato per sincronizzare l'accesso alle risorse condivise, consentendo a più goroutine di leggere i dati contemporaneamente, ma bloccando la scrittura mentre si effettua una lettura, e viceversa.

Lo scopo principale di RWMutex è migliorare le prestazioni in scenari in cui le operazioni di lettura sono molto più frequenti di quelle di scrittura. Fornisce due tipi di blocchi:

  • RLock() — blocco per la lettura, permette a più lettori di accedere contemporaneamente.
  • Lock() — blocco per la scrittura, accesso esclusivo.

Esempio di utilizzo:

var mu sync.RWMutex
var data int

func readData() int {
    mu.RLock()
    defer mu.RUnlock()
    return data
}

func writeData(val int) {
    mu.Lock()
    defer mu.Unlock()
    data = val
}

In questo modo, RWMutex aiuta a gestire in modo efficiente l'accesso concorrente, minimizzando i blocchi durante le frequenti operazioni di lettura.