Sobes.tech
Junior — Middle

Használta a ReadWriteLock mechanizmust projektjeiben a párhuzamos erőforrás-kezeléshez?

sobes.tech MI

Válasz az MI-től

Igen, a ReadWriteLock mechanizmus gyakran használatos az erőforrások párhuzamos hozzáférésének kezelésére, amikor a teljesítmény növelése érdekében el kell különíteni az olvasási és írási műveleteket.

A ReadWriteLock lehetővé teszi, hogy több szál egyszerre olvassa az erőforrást (olvasási zárolás), de blokkolja az írást (írási zárolás), ha aktív olvasók vannak. Az írás kizárólagos hozzáférést igényel, azaz blokkolja a többi író és olvasó szálakat.

Androidban (Java/Kotlin) ezt a java.util.concurrent.locks csomagból származó ReentrantReadWriteLock osztály valósítja meg.

Kotlin példakód:

val lock = ReentrantReadWriteLock()
val readLock = lock.readLock()
val writeLock = lock.writeLock()
var megosztottErőforrás = 0

fun olvasdAzAdatokat(): Int {
    readLock.lock()
    try {
        return megosztottErőforrás
    } finally {
        readLock.unlock()
    }
}

fun írjAzAdatokat(érték: Int) {
    writeLock.lock()
    try {
        megosztottErőforrás = érték
    } finally {
        writeLock.unlock()
    }
}

Ez a megközelítés lehetővé teszi a hatékonyság növelését sok olvasási művelet és ritka írási művelet esetén, elkerülve a felesleges zárolásokat.