A thread lock for shared data where there may be many readers and one writer.
More...
|
| SharedMutex () |
|
| SharedMutex (const SharedMutex &) |
| Can't copy, silently inits to default. More...
|
|
| ~SharedMutex () |
|
SharedMutex & | operator= (const SharedMutex &) |
| Can't copy, silently does nothing. More...
|
|
void | lock () |
| Acquire the unique writer lock. Thread suspends until lock is available and all readers release the shared lock. More...
|
|
void | unlock () |
| Release the unique writer lock. More...
|
|
bool | tryLock () |
| Attempt to acquire the unique writer lock, returns immediately. Returns true if the lock was acquired, false otherwise. More...
|
|
bool | tryLock (MonoClock::Duration time) |
| Attempt to acquire the unique writer lock for an amount of time. Returns true if the lock was acquired, false if timed out. More...
|
|
bool | tryLock (MonoClock::TimePoint time) |
| Attempt to acquire the unique writer lock until a certain time. Returns true if the lock was acquired, false if timed out. More...
|
|
void | lockShared () |
| Acquire the shared reader lock. Thread suspends until writer lock has been released. More...
|
|
void | unlockShared () |
| Release the shared reader lock. More...
|
|
bool | tryLockShared () |
| Attempt to acquire the shared reader lock, returns immediately. Returns true if the lock was acquired, false otherwise. More...
|
|
bool | tryLockShared (MonoClock::Duration time) |
| Attempt to acquire the shared reader lock for an amount of time. Returns true if the lock was acquired, false if timed out. More...
|
|
bool | tryLockShared (MonoClock::TimePoint time) |
| Attempt to acquire the shared reader lock until a certain time. Returns true if the lock was acquired, false if timed out. More...
|
|
void | unlockAndLockShared () |
| Atomically unlock unique writer lock and acquire shared reader lock without blocking. More...
|
|
A thread lock for shared data where there may be many readers and one writer.
A thread acquiring a writer lock will suspend execution while there are readers.
The lock is recursive: one thread can acquire the lock multiple times, which must be followed by the same number of unlocks.
This class uses atomics, so locking without contention is faster than a platform Mutex.