Sobes.tech
Junior — Middle

Welche Arten von gegenseitigen Ausschlüssen (Mutex) sind in der Standardbibliothek von Go implementiert?

sobes.tech KI

Antwort von AI

In der Standardbibliothek von Go ist ein Haupttyp der gegenseitigen Ausschlusses implementiert: sync.Mutex. Es ist ein einfacher Mutex, der Sperr- und Freigabefunktionen bereitstellt, um kritische Abschnitte des Codes vor gleichzeitigen Zugriffen zu schützen.

Außerdem gibt es sync.RWMutex – eine erweiterte Version des Mutex, die mehreren Lesern gleichzeitig Sperren erlaubt, aber Schreibzugriffe exklusiv blockiert.

Beispiel für die Verwendung von sync.Mutex:

var mu sync.Mutex
var counter int

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

Und ein Beispiel mit 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
}