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

ReadWriteLock Struct Reference

A ReadWriteLock maintains a pair of associated locks, one for read-only operations and one for writing. The read lock may be held simultaneously by multiple reader threads, so long as there are no writers. The write lock is exclusive. More...

Inheritance diagram for ReadWriteLock:

ReentrantReadWriteLock List of all members.

Public Member Functions

Lock readLock ()
Lock writeLock ()

Detailed Description

A ReadWriteLock maintains a pair of associated locks, one for read-only operations and one for writing. The read lock may be held simultaneously by multiple reader threads, so long as there are no writers. The write lock is exclusive.

A read-write lock allows for a greater level of concurrency in accessing shared data, than that permitted by a mutual exclusion lock. It exploits the fact that while only a single thread at a time (a writer thread) can modify the shared data, in many cases any number of threads can concurrently read the data (hence reader threads). In theory, the increase in concurrency permitted by the use of a read-write lock will lead to performance improvements over the use of a mutual exclusion lock. In practice this increase in concurrency will only be fully realized on a multi-processor, and then only if the access patterns for the shared data are suitable.

Whether or not a read-write lock will improve performance over the use of a mutual exclusion lock depends on the frequency that the data is read compared to being modified, the duration of the read and write operations, and the contention for the data - that is, the number of threads that will try to read or write the data at the same time. For example, a collection that is initially populated with data and thereafter infrequently modified, while being frequently searched (such as a directory of some kind) is an ideal candidate for the use of a read-write lock. However, if updates become frequent then the data spends most of its time being exclusively locked and there is little, if any increase in concurrency. Further, if the read operations are too short the overhead of the read-write lock implementation (which is inherently more complex than a mutual exclusion lock) can dominate the execution cost, particularly as many read-write lock implementations still serialize all threads through a small section of code. Ultimately, only profiling and measurement will establish whether the use of a read-write lock is suitable for your application.

See also:
ReentrantReadWriteLock

Lock

ReentrantLock

Definition at line 60 of file ReadWriteLock.d.


Member Function Documentation

Lock readLock  ) 
 

Returns the lock used for reading.

Returns:
the lock used for reading.

Reimplemented in ReentrantReadWriteLock.

Lock writeLock  ) 
 

Returns the lock used for writing.

Returns:
the lock used for writing.

Reimplemented in ReentrantReadWriteLock.


The documentation for this struct was generated from the following file:
Generated on Fri Nov 11 18:44:41 2005 for Mango by  doxygen 1.4.0