Public Member Functions |
bool | access (timeout_t timeout=Timer::inf) |
| Request shared (read) access through the lock.
|
unsigned | getAccess (void) |
| Get the number of threads in shared access mode.
|
unsigned | getModify (void) |
| Get the number of threads waiting to modify the lock.
|
unsigned | getWaiting (void) |
| Get the number of threads waiting to access after writer completes.
|
bool | modify (timeout_t timeout=Timer::inf) |
| Request modify (write) access through the lock.
|
void | release (void) |
| Release the lock.
|
| ThreadLock () |
| Create an instance of a rwlock.
|
virtual void | Exlock (void)=0 |
| Protocol interface to exclusive lock the object.
|
void | Lock (void) |
| A convenience member function for accessing the exclusive lock.
|
virtual void | Unlock (void)=0 |
| Protocol interface to release a lock.
|
virtual void | Exclusive (void) |
| Convert object to an exclusive lock.
|
void | Lock (void) |
| A convenience member function for accessing the shared lock.
|
virtual void | Share (void) |
| Share the lock with other referencers.
|
virtual void | Shlock (void)=0 |
| Protocol interface to share lock the object.
|
virtual void | Unlock (void)=0 |
| Protocol interface to release a lock.
|
Additional Inherited Members |
void | access (void) |
| Access mode shared thread scheduling.
|
void | commit (void) |
| Complete exclusive mode write scheduling.
|
| ConditionalAccess () |
| Initialize and construct conditional.
|
void | limit_sharing (unsigned max) |
| Specify a maximum sharing (access) limit.
|
void | modify (void) |
| Exclusive mode write thread scheduling.
|
void | release (void) |
| Release access mode read scheduling.
|
| ~ConditionalAccess () |
| Destroy conditional, release any blocked threads.
|
void | broadcast (void) |
| Signal the conditional to release all broadcast threads.
|
void | lock (void) |
| Lock the conditional's supporting mutex.
|
void | signal (void) |
| Signal the conditional to release one signalled thread.
|
void | unlock (void) |
| Unlock the conditional's supporting mutex.
|
bool | waitBroadcast (timeout_t timeout) |
| Conditional wait for broadcast on millisecond timeout.
|
bool | waitBroadcast (struct timespec *timeout) |
| Conditional wait for broadcast on timespec timeout.
|
void | waitBroadcast (void) |
| Wait (block) until broadcast.
|
bool | waitSignal (timeout_t timeout) |
| Conditional wait for signal on millisecond timeout.
|
bool | waitSignal (struct timespec *timeout) |
| Conditional wait for signal on timespec timeout.
|
void | waitSignal (void) |
| Wait (block) until signalled.
|
A generic and portable implimentation of Read/Write locking.
This class impliments classical read/write locking, including "timed" locks. Support for scheduling threads to avoid writer starvation is also provided for. By building read/write locks from a conditional, we make them available on pthread implimetations and other platforms which do not normally include optional pthread rwlock's. We also do not restrict the number of threads that may use the lock. Finally, both the exclusive and shared protocols are implimented to support exclusive_lock and shared_lock referencing.
- Author
- David Sugar dyfet.nosp@m.@gnu.nosp@m.telep.nosp@m.hony.nosp@m..org
Definition at line 547 of file thread.h.