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.