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
}