Sobes.tech
Junior — Middle

Жобаларыңызда ресурстар менен параллелдүү ишти башкаруу үчүн ReadWriteLock механизмин колдондуңузбу?

sobes.tech AI

AIден жооп

Ооба, ReadWriteLock механизми көбүнчө ресурстарга параллелдүү кирүүнү башкаруу үчүн колдонулат, окуу жана жазуу операцияларын бөлүү аркылуу иштөөчәндикти жакшыртуу үчүн.

ReadWriteLock бир нече агымга ресурсты бир убакта окууга мүмкүндүк берет (окуу үчүн бекитүү), бирок активдүү окуучулар болсо жазууга кирүүгө бөгөт коет (жазуу үчүн бекитүү). Жазуу эксклюзивдүү кирүүнү талап кылат, башкача айтканда, башка жазуучуларды жана окуучуларды бөгөттөйт.

Androidда (Java/Kotlin) бул java.util.concurrent.locks пакетинен ReentrantReadWriteLock классы аркылуу ишке ашырылат.

Kotlinде колдонуу мисалы:

val lock = ReentrantReadWriteLock()
val readLock = lock.readLock()
val writeLock = lock.writeLock()
var бөлүштүрүлгөнРесурс = 0

fun окууМаалыматтары(): Int {
    readLock.lock()
    try {
        return бөлүштүрүлгөнРесурс
    } finally {
        readLock.unlock()
    }
}

fun жазууМаалыматтары(баа: Int) {
    writeLock.lock()
    try {
        бөлүштүрүлгөнРесурс = баа
    } finally {
        writeLock.unlock()
    }
}

Бул ыкма көптөгөн окуу операциялары жана сейрек жазуу операциялары учурунда эффективдүүлүктү жогорулатууга мүмкүндүк берет, ашыкча бөгөттөөдө алдын алат.