A readers-writer mutex class. More...
#include <xsens_mutex.h>
Public Member Functions | |
MutexReadWrite () | |
~MutexReadWrite () | |
Private Member Functions | |
void | addReadLock (XsThreadId cid) |
bool | claimMutex (bool write) |
bool | downgradeToRead () |
Downgrade an existing write lock to a read lock. More... | |
void | enterAtomic () |
bool | haveReadClaim () const |
bool | haveWriteClaim () const |
void | leaveAtomic () |
MutexReadWrite (MutexReadWrite &&)=delete | |
MutexReadWrite (MutexReadWrite const &)=delete | |
MutexReadWrite & | operator= (MutexReadWrite &&)=delete |
MutexReadWrite & | operator= (MutexReadWrite const &)=delete |
bool | releaseMutex (bool write) |
bool | tryClaimMutex (bool write, uint32_t timeout) |
Private Attributes | |
Mutex | m_access |
int | m_readLockCount |
XsThreadId * | m_readLocked |
int | m_readLockMax |
volatile std::atomic< XsThreadId > | m_writeLocked |
volatile std::atomic_int | m_writeLocksPending |
volatile std::atomic_int | m_writeRef |
Friends | |
class | LockReadWrite |
A readers-writer mutex class.
Any number of readers can claim the mutex at the same time, which blocks a writer from claiming it. If a writer claims the mutex, all subsequent read claims will be blocked until no more read claims exist and the write claim has been completed (released). Recursive read claims within a thread that already has a read or write claim for this mutex will be granted to prevent deadlocks.
Definition at line 248 of file xsens_mutex.h.
|
privatedelete |
|
privatedelete |
|
inline |
Definition at line 266 of file xsens_mutex.h.
|
inline |
Definition at line 275 of file xsens_mutex.h.
|
inlineprivate |
Definition at line 280 of file xsens_mutex.h.
|
inlineprivate |
Definition at line 303 of file xsens_mutex.h.
|
inlineprivate |
Downgrade an existing write lock to a read lock.
Definition at line 373 of file xsens_mutex.h.
|
inlineprivate |
Definition at line 293 of file xsens_mutex.h.
|
inlineprivate |
Definition at line 524 of file xsens_mutex.h.
|
inlineprivate |
Definition at line 512 of file xsens_mutex.h.
|
inlineprivate |
Definition at line 298 of file xsens_mutex.h.
|
privatedelete |
|
privatedelete |
|
inlineprivate |
Definition at line 389 of file xsens_mutex.h.
|
inlineprivate |
Definition at line 428 of file xsens_mutex.h.
|
friend |
Definition at line 259 of file xsens_mutex.h.
|
private |
Definition at line 251 of file xsens_mutex.h.
|
private |
Definition at line 258 of file xsens_mutex.h.
|
private |
Definition at line 255 of file xsens_mutex.h.
|
private |
Definition at line 257 of file xsens_mutex.h.
|
private |
Definition at line 253 of file xsens_mutex.h.
|
private |
Definition at line 254 of file xsens_mutex.h.
|
private |
Definition at line 252 of file xsens_mutex.h.