Sobes.tech
Junior — Middle

Wat is het verschil tussen het gebruik van een standaard mutex en een mutex met lees- en schrijfrechten (RWMutex)?

sobes.tech AI

Antwoord van AI

De standaard mutex (sync.Mutex) in Go zorgt voor exclusieve toegang tot een resource: op elk moment kan slechts één goroutine de mutex vergrendelen, de rest wacht.

De mutex met lees- en schrijfmogelijkheden (sync.RWMutex) maakt het volgende mogelijk:

  • Meerdere goroutines kunnen gelijktijdig de mutex vergrendelen voor lezen (RLock), zolang er geen schrijver is.
  • Slechts één goroutine kan de mutex vergrendelen voor schrijven (Lock), waardoor alle lezers en andere schrijvers worden geblokkeerd.

Dit verbetert de prestaties in scenario's waar leesbewerkingen veel vaker voorkomen dan schrijfbewerkingen, omdat lezingen elkaar niet blokkeren.

Voorbeeld:

var mu sync.RWMutex
var data int

// Lezen
mu.RLock()
fmt.Println(data)
mu.RUnlock()

// Schrijven
mu.Lock()
data = 42
mu.Unlock()

Als een gewone Mutex wordt gebruikt, blokkeren zelfs de lezingen elkaar, wat de paralleliteit vermindert.