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.