ucommon::ThreadLock Class Reference
A generic and portable implimentation of Read/Write locking.
More...
#include <thread.h>
Data Structures |
class | gaurd_reader |
| Gaurd class to apply scope based access locking to objects. More...
|
class | gaurd_writer |
| Gaurd class to apply scope based exclusive locking to objects. More...
|
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.
|
Static Public Member Functions |
static bool | access (ThreadLock &lock, timeout_t timeout=Timer::inf) |
| Convenience function to access (read lock) a rwlock.
|
static void | indexing (unsigned size) |
| Specify hash table size for gaurd protection.
|
static bool | modify (ThreadLock &lock, timeout_t timeout=Timer::inf) |
| Convenience function to modify (write lock) a rwlock.
|
static bool | reader (void *object, timeout_t timeout=Timer::inf) |
| Shared access to an arbitrary object.
|
static void | release (ThreadLock &lock) |
| Convenience function to release a rwlock.
|
static void | release (void *object) |
| Release an arbitrary object that has been protected by a rwlock.
|
static bool | writer (void *object, timeout_t timeout=Timer::inf) |
| Write protect access to an arbitrary object.
|
Protected Member Functions |
void | Exlock (void) |
| Protocol interface to exclusive lock the object.
|
void | Shlock (void) |
| Protocol interface to share lock the object.
|
void | Unlock (void) |
| Protocol interface to release a lock.
|
Protected Attributes |
pthread_t | writeid |
unsigned | writers |
Detailed Description
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@gnutelephony.org>
Definition at line 547 of file thread.h.
Member Function Documentation
Convenience function to access (read lock) a rwlock.
- Parameters:
-
| lock | to access. |
| timeout | to wait for lock. |
- Returns:
- true if successful, false if timeout.
Definition at line 749 of file thread.h.
Request shared (read) access through the lock.
- Parameters:
-
| timeout | in milliseconds to wait for lock. |
- Returns:
- true if locked, false if timeout.
unsigned ucommon::ThreadLock::getAccess |
( |
void |
|
) |
|
Get the number of threads in shared access mode.
- Returns:
- number of accessing threads.
unsigned ucommon::ThreadLock::getModify |
( |
void |
|
) |
|
Get the number of threads waiting to modify the lock.
- Returns:
- number of pending write threads.
unsigned ucommon::ThreadLock::getWaiting |
( |
void |
|
) |
|
Get the number of threads waiting to access after writer completes.
- Returns:
- number of waiting access threads.
static void ucommon::ThreadLock::indexing |
( |
unsigned |
size |
) |
[static] |
Specify hash table size for gaurd protection.
The default is 1. This should be called at initialization time from the main thread of the application before any other threads are created.
- Parameters:
-
| size | of hash table used for gaurding. |
Convenience function to modify (write lock) a rwlock.
- Parameters:
-
| lock | to modify. |
| timeout | to wait for lock. |
- Returns:
- true if successful, false if timeout.
Definition at line 740 of file thread.h.
Request modify (write) access through the lock.
- Parameters:
-
| timeout | in milliseconds to wait for lock. |
- Returns:
- true if locked, false if timeout.
static bool ucommon::ThreadLock::reader |
( |
void * |
object, |
|
|
timeout_t |
timeout = Timer::inf | |
|
) |
| | [static] |
Shared access to an arbitrary object.
This is based on the protect function of mutex.
- Parameters:
-
| object | to share. |
| timeout | in milliseconds to wait for lock. |
- Returns:
- true if shared, false if timeout.
static void ucommon::ThreadLock::release |
( |
ThreadLock & |
lock |
) |
[inline, static] |
Convenience function to release a rwlock.
- Parameters:
-
Definition at line 756 of file thread.h.
static void ucommon::ThreadLock::release |
( |
void * |
object |
) |
[static] |
Release an arbitrary object that has been protected by a rwlock.
- Parameters:
-
static bool ucommon::ThreadLock::writer |
( |
void * |
object, |
|
|
timeout_t |
timeout = Timer::inf | |
|
) |
| | [static] |
Write protect access to an arbitrary object.
This is like the protect function of mutex.
- Parameters:
-
| object | to protect. |
| timeout | in milliseconds to wait for lock. |
- Returns:
- true if locked, false if timeout.
The documentation for this class was generated from the following file: