Junior — Middle
Welche Arten von Mutual-Exclusion-Sperrmechanismen verwendest du in deinen Projekten?
sobes.tech KI
Antwort von AI
In Go verwende ich zur Implementierung von gegenseitiger Ausschluss meist den Standardtyp sync.Mutex. Er ist einfach zu verwenden und blockiert effektiv kritische Codeabschnitte.
Außerdem verwende ich sync.RWMutex, wenn ich den Zugriff auf Lesen und Schreiben aufteilen muss: Mehrere Goroutines können gleichzeitig lesen, aber Schreibzugriffe blockieren alle.
In einigen Fällen nutze ich Kanäle (channels) zur Synchronisation, was es ermöglicht, explizite Sperren zu vermeiden und den Code deklarativer zu gestalten.
Beispiel mit sync.Mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Die Wahl des Mechanismus hängt also von der konkreten Aufgabe und den Leistungsanforderungen ab.