Mecanismo utilizado permite mais concorrência sem detrimento da exclusão mútua, expondo um lock para leitura e outra para escrita.
Lock de Leitura —> Acesso partilhado, onde múltiplas threads com este lock têm acesso à secção crítica para fins de leitura
Lock de Escrita —> Acesso exclusivo, onde apenas uma thread tem acesso à secção crítica para fins de leitura e/ou escrita.
Lock Leitura | Lock Escrita | |
---|---|---|
Lock de Leitura | ✅ | ❌ |
Lock de Escrita | ❌ | ❌ |
ReentrantReadWriteLock() // construtor
readLock().lock() // adquirir lock de leitura
readLock().unlock() // libertar lock de escrita
writeLock().lock() // adquirir lock de escrita
writeLock().unlock() // libertar lock de escrita