Sobes.tech
Junior — Middle

Ați folosit mecanismul ReadWriteLock în proiectele dvs. pentru gestionarea muncii paralele cu resursele?

sobes.tech AI

Răspuns de la AI

Da, mecanismul ReadWriteLock este adesea utilizat pentru gestionarea accesului paralel la resurse, atunci când este nevoie de creșterea performanței prin separarea operațiilor de citire și scriere.

ReadWriteLock permite mai multor fire să citească resursa simultan (lock de citire), dar blochează accesul pentru scriere (lock de scriere) dacă există cititori activi. Scrierea necesită acces exclusiv, adică blochează atât alți scriitori, cât și cititori.

În Android (Java/Kotlin), acest lucru se implementează prin clasa ReentrantReadWriteLock din pachetul java.util.concurrent.locks.

Exemplu de utilizare în Kotlin:

val lock = ReentrantReadWriteLock()
val readLock = lock.readLock()
val writeLock = lock.writeLock()
var resursăPartajată = 0

fun citeșteDate(): Int {
    readLock.lock()
    try {
        return resursăPartajată
    } finally {
        readLock.unlock()
    }
}

fun scrieDate(valoare: Int) {
    writeLock.lock()
    try {
        resursăPartajată = valoare
    } finally {
        writeLock.unlock()
    }
}

Această abordare permite creșterea eficienței în cazul unui număr mare de operații de citire și al unor scrieri rare, evitând blocările inutile.