Sobes.tech
Junior — Middle

Welke soorten onderlinge uitsluitingen (Mutex) zijn geïmplementeerd in de standaardbibliotheek van Go?

sobes.tech AI

Antwoord van AI

In de standaardbibliotheek van Go is een hoofdtype van onderlinge uitsluiting geïmplementeerd: sync.Mutex. Het is een eenvoudige mutex die vergrendeling en ontgrendeling biedt om kritieke secties van de code te beschermen tegen gelijktijdige toegang.

Daarnaast is er sync.RWMutex — een uitgebreide versie van de mutex die meerdere lezers gelijktijdig een vergrendeling laat behouden, maar schrijven wordt exclusief geblokkeerd.

Voorbeeld van het gebruik van sync.Mutex:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()
    defer mu.Unlock()
    counter++
}

En een voorbeeld met sync.RWMutex:

var rwMu sync.RWMutex
var data int

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

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