Sobes.tech
Junior — Middle

Da li ste koristili mehanizam ReadWriteLock u svojim projektima za upravljanje paralelnim radom sa resursima?

sobes.tech АИ

Одговор од АИ

Da, mehanizam ReadWriteLock često se koristi za upravljanje paralelnim pristupom resursima, kada je potrebno povećati performanse razdvajanjem operacija čitanja i pisanja.

ReadWriteLock omogućava više niti da istovremeno čitaju resurs (zaključavanje za čitanje), ali blokira pristup za pisanje (zaključavanje za pisanje) ako postoje aktivni čitaoci. Pisanje zahteva ekskluzivni pristup, tj. blokira i druge pisce i čitaoce.

U Androidu (Java/Kotlin), ovo se implementira putem klase ReentrantReadWriteLock iz paketa java.util.concurrent.locks.

Primer upotrebe u Kotlinu:

val lock = ReentrantReadWriteLock()
val readLock = lock.readLock()
val writeLock = lock.writeLock()
var deljeniResurs = 0

fun citajPodatke(): Int {
    readLock.lock()
    try {
        return deljeniResurs
    } finally {
        readLock.unlock()
    }
}

fun pisiPodatke(vrednost: Int) {
    writeLock.lock()
    try {
        deljeniResurs = vrednost
    } finally {
        writeLock.unlock()
    }
}

Ovaj pristup omogućava povećanje efikasnosti kod velikog broja operacija čitanja i retkih operacija pisanja, izbegavajući nepotrebno blokiranje.