Как ждать данных с ReentrantReadWriteLock?
Он сказал, чтоReentrantReadWriteLock
предназначен для одного писателя и нескольких читателей.
Тем не менее, читатели должны подождать, пока в буфере не появятся некоторые данные.
Итак, что заблокировать?
Я создал объекты параллелизма следующим образом:
private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();
protected final Lock readLock = rwl.readLock();
protected final Lock writeLock = rwl.writeLock();
protected final Condition hasData = writeLock.newCondition();
сейчас в методе записи я делаю:
writeLock.lock();
// writing first portion and updating variables
hasData.signalAll();
// if required then writing second portion and updating variables
hasData.signalAll();
Но как написать читателю? Должен ли он приобрести толькоreadLock
? Но как он может ждать сигнала тогда? Если это также приобретаетwriteLock
тогда где превосходство блокировки чтения / записи?
Как обеспечить, чтобы требуемые переменные не изменялись во время чтения, если они защищены только?writeLock
QUEUES DON 'Т СОВМЕСТНАЯ ЗАДАЧА
Это вопрос о.ReentrantReadWriteLock