Sobes.tech
Junior — Middle

Leg uit wat een Read-Write lock (RWMutex) is en hoe het wordt gebruikt om toegang tot gegevens te beheren.

sobes.tech AI

Antwoord van AI

Read-Write blokkering (RWMutex) in Go is een synchronisatie-mechanisme dat meerdere goroutines tegelijkertijd gegevens laat lezen, maar gelijktijdige toegang tijdens het schrijven garandeert.

  • RLock() / RUnlock() — lock voor lezen. Meerdere goroutines kunnen deze lock gelijktijdig vasthouden.
  • Lock() / Unlock() — lock voor schrijven. Slechts één goroutine kan deze vasthouden, en geen lezingen zijn toegestaan tijdens deze periode.

Dit verhoogt de prestaties wanneer er veel leesbewerkingen zijn en weinig schrijfbewerkingen.

Voorbeeld van gebruik:

var rwMutex sync.RWMutex
var data int

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

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

In dit voorbeeld kunnen meerdere goroutines gelijktijdig readData() aanroepen, maar als writeData() wordt aangeroepen, blokkeert het alle lezen en schrijven tot het klaar is.