Sobes.tech
Junior — Middle

Magyarázza el, mi az a Read-Write zár (RWMutex), és hogyan használják az adatokhoz való hozzáférés kezelésére.

sobes.tech MI

Válasz az MI-től

A Go nyelvben az olvasás-írás (RWMutex) zárolás egy szinkronizációs mechanizmus, amely lehetővé teszi több goroutine számára, hogy egyidejűleg olvassanak adatokat, miközben garantálja az exkluzív hozzáférést írás közben.

  • RLock() / RUnlock() — olvasási zárolás. Több goroutine is tarthatja egyszerre ezt a zárolást.
  • Lock() / Unlock() — írási zárolás. Csak egy goroutine tarthatja, és ez idő alatt nem engedélyezett az olvasás.

Ez növeli a teljesítményt, ha sok olvasási művelet van, és ritkán írnak.

Használati példa:

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
}

Ebben a példában több goroutine hívhatja a readData()-t egyidejűleg, de ha a writeData()-t hívják, az blokkolja az összes olvasást és írást a befejezéséig.