Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock Class Reference

Collaboration diagram for com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock:

Collaboration graph
[legend]
List of all members.

Public Member Functions

Sync writeLock ()
Sync readLock ()

Protected Member Functions

synchronized void cancelledWaitingReader ()
synchronized void cancelledWaitingWriter ()
boolean allowReader ()
synchronized boolean startRead ()
synchronized boolean startWrite ()
synchronized boolean startReadFromNewReader ()
synchronized boolean startWriteFromNewWriter ()
synchronized boolean startReadFromWaitingReader ()
synchronized boolean startWriteFromWaitingWriter ()
synchronized Signaller endRead ()
synchronized Signaller endWrite ()

Protected Attributes

long activeReaders_ = 0
Thread activeWriter_ = null
long waitingReaders_ = 0
long waitingWriters_ = 0
final ReaderLock readerLock_ = new ReaderLock()
final WriterLock writerLock_ = new WriterLock()

Detailed Description

A ReadWriteLock that prefers waiting writers over waiting readers when there is contention. This class is adapted from the versions described in CPJ, improving on the ones there a bit by segregating reader and writer wait queues, which is typically more efficient.

The locks are NOT reentrant. In particular, even though it may appear to usually work OK, a thread holding a read lock should not attempt to re-acquire it. Doing so risks lockouts when there are also waiting writers.

[Introduction to this package. ]


Member Function Documentation

boolean com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock::allowReader  )  [inline, protected]
 

synchronized void com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock::cancelledWaitingReader  )  [inline, protected]
 

synchronized void com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock::cancelledWaitingWriter  )  [inline, protected]
 

synchronized Signaller com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock::endRead  )  [inline, protected]
 

Called upon termination of a read. Returns the object to signal to wake up a waiter, or null if no such

synchronized Signaller com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock::endWrite  )  [inline, protected]
 

Called upon termination of a write. Returns the object to signal to wake up a waiter, or null if no such

Sync com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock::readLock  )  [inline]
 

synchronized boolean com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock::startRead  )  [inline, protected]
 

synchronized boolean com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock::startReadFromNewReader  )  [inline, protected]
 

synchronized boolean com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock::startReadFromWaitingReader  )  [inline, protected]
 

synchronized boolean com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock::startWrite  )  [inline, protected]
 

synchronized boolean com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock::startWriteFromNewWriter  )  [inline, protected]
 

synchronized boolean com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock::startWriteFromWaitingWriter  )  [inline, protected]
 

Sync com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock::writeLock  )  [inline]
 


Member Data Documentation

long com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock::activeReaders_ = 0 [protected]
 

Thread com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock::activeWriter_ = null [protected]
 

final ReaderLock com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock::readerLock_ = new ReaderLock() [protected]
 

long com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock::waitingReaders_ = 0 [protected]
 

long com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock::waitingWriters_ = 0 [protected]
 

final WriterLock com::cosylab::acs::maci::manager::ReaderPreferenceReadWriteLock::writerLock_ = new WriterLock() [protected]
 


The documentation for this class was generated from the following file:
Generated on Thu Apr 30 03:11:26 2009 for ACS Java API by doxygen 1.3.8