| java.lang.Object EDU.oswego.cs.dl.util.concurrent.FIFOReadWriteLock
FIFOReadWriteLock | public class FIFOReadWriteLock implements ReadWriteLock(Code) | | This class implements a policy for reader/writer locks in which
threads contend in a First-in/First-out manner for access (modulo
the limitations of FIFOSemaphore, which is used for queuing). This
policy does not particularly favor readers or writers. As a
byproduct of the FIFO policy, the attempt methods may
return false even when the lock might logically be
available, but, due to contention, cannot be accessed within the
given time bound.
This lock is NOT reentrant. Current readers and
writers should not try to re-obtain locks while holding them.
[ Introduction to this package. ]
See Also: FIFOSemaphore |
Inner Class :protected class ReaderSync implements Sync | |
Inner Class :protected class WriterSync implements Sync | |
entryLock | final protected FIFOSemaphore entryLock(Code) | | Fair Semaphore serving as a kind of mutual exclusion lock.
Writers acquire on entry, and hold until rwlock exit.
Readers acquire and release only during entry (but are
blocked from doing so if there is an active writer).
|
exreaders | protected int exreaders(Code) | | Number of threads that have exited read lock. Note that this is
never reset to zero. Accessed only in code protected by
synchronized(this). When exreaders != readers, the rwlock is
being used for reading. Else if the entry lock is held, it is
being used for writing (or in transition). Else it is free.
Note: To distinguish these states, we assume that fewer than 2^32
reader threads can simultaneously execute.
|
readers | protected volatile int readers(Code) | | Number of threads that have entered read lock. Note that this is
never reset to zero. Incremented only during acquisition of read
lock while the "entryLock" is held, but read elsewhere, so is
declared volatile.
|
releaseRead | protected synchronized void releaseRead()(Code) | | |
releaseWrite | protected void releaseWrite()(Code) | | |
|
|