Sobes.tech
Junior — Middle

Já utilizou o mecanismo ReadWriteLock nos seus projetos para gerir o trabalho paralelo com recursos?

sobes.tech IA

Resposta da IA

Sim, o mecanismo ReadWriteLock é frequentemente utilizado para gerir o acesso paralelo aos recursos, quando é necessário melhorar o desempenho através da separação das operações de leitura e escrita.

ReadWriteLock permite que múltiplos threads leiam o recurso simultaneamente (lock de leitura), mas bloqueia o acesso para escrita (lock de escrita) se houver leitores ativos. A escrita requer acesso exclusivo, ou seja, bloqueia outros escritores e leitores.

Em Android (Java/Kotlin), isto é implementado através da classe ReentrantReadWriteLock do pacote java.util.concurrent.locks.

Exemplo de uso em Kotlin:

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

fun lerDados(): Int {
    readLock.lock()
    try {
        return recursoCompartilhado
    } finally {
        readLock.unlock()
    }
}

fun escreverDados(valor: Int) {
    writeLock.lock()
    try {
        recursoCompartilhado = valor
    } finally {
        writeLock.unlock()
    }
}

Esta abordagem permite melhorar a eficiência em operações de leitura frequentes e escritas raras, evitando bloqueios desnecessários.