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.