Sobes.tech
Junior — Middle

Erklären Sie, was eine Read-Write-Sperre (RWMutex) ist und wie sie zur Steuerung des Datenzugriffs verwendet wird.

sobes.tech KI

Antwort von AI

Der Read-Write-Blockierer (RWMutex) in Go ist ein Synchronisationsmechanismus, der es mehreren Goroutines ermöglicht, Daten gleichzeitig zu lesen, aber gleichzeitig exklusiven Zugriff beim Schreiben garantiert.

  • RLock() / RUnlock() — Sperre für das Lesen. Mehrere Goroutines können diese Sperre gleichzeitig halten.
  • Lock() / Unlock() — Sperre für das Schreiben. Nur eine Goroutine kann sie halten, und währenddessen sind keine Lesezugriffe erlaubt.

Dies erhöht die Leistung, wenn viele Leseoperationen durchgeführt werden und Schreiboperationen selten sind.

Beispiel für die Verwendung:

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 diesem Beispiel können mehrere Goroutines gleichzeitig readData() aufrufen, aber wenn writeData() aufgerufen wird, blockiert sie alle Lese- und Schreibzugriffe, bis sie abgeschlossen ist.