A readers-writer mutex class that is able to be suspended.
More...
#include <xsens_mutex.h>
A readers-writer mutex class that is able to be suspended.
Definition at line 564 of file xsens_mutex.h.
◆ Mode
An enum class that holds a three different modes of a suspendable mutex.
Enumerator |
---|
Read | |
Write | |
SuspendedWrite | |
Definition at line 585 of file xsens_mutex.h.
◆ MutexReadWriteSuspendable() [1/3]
◆ MutexReadWriteSuspendable() [2/3]
◆ MutexReadWriteSuspendable() [3/3]
xsens::MutexReadWriteSuspendable::MutexReadWriteSuspendable |
( |
| ) |
|
|
inline |
◆ ~MutexReadWriteSuspendable()
xsens::MutexReadWriteSuspendable::~MutexReadWriteSuspendable |
( |
| ) |
|
|
inline |
◆ addReadLock()
void xsens::MutexReadWriteSuspendable::addReadLock |
( |
XsThreadId |
cid | ) |
|
|
inlineprivate |
◆ claimMutex() [1/2]
bool xsens::MutexReadWriteSuspendable::claimMutex |
( |
bool |
write | ) |
|
|
inlineprotected |
Claims (locks) a mutex for read or write modes.
- Parameters
-
write | If set to true write mode is used, otherwise read mode |
- Returns
- True if successful
- Note
- Made for backwards compatibility
Definition at line 748 of file xsens_mutex.h.
◆ claimMutex() [2/2]
bool xsens::MutexReadWriteSuspendable::claimMutex |
( |
Mode |
mode | ) |
|
|
inlineprotected |
Claims (locks) a mutex using a given mode.
- Parameters
-
- Returns
- True if successful
Definition at line 637 of file xsens_mutex.h.
◆ downgradeToRead()
bool xsens::MutexReadWriteSuspendable::downgradeToRead |
( |
bool |
decreaseSuspend | ) |
|
|
inlineprotected |
Downgrade an existing write lock to a read lock.
Definition at line 755 of file xsens_mutex.h.
◆ enterAtomic()
void xsens::MutexReadWriteSuspendable::enterAtomic |
( |
| ) |
|
|
inlineprivate |
◆ haveReadClaim()
bool xsens::MutexReadWriteSuspendable::haveReadClaim |
( |
| ) |
const volatile |
|
inlineprotected |
◆ haveWriteClaim()
bool xsens::MutexReadWriteSuspendable::haveWriteClaim |
( |
| ) |
const volatile |
|
inlineprotected |
- Returns
- True if is has an write lock
Definition at line 931 of file xsens_mutex.h.
◆ leaveAtomic()
void xsens::MutexReadWriteSuspendable::leaveAtomic |
( |
| ) |
|
|
inlineprivate |
◆ operator=() [1/2]
◆ operator=() [2/2]
◆ releaseMutex() [1/2]
bool xsens::MutexReadWriteSuspendable::releaseMutex |
( |
bool |
write, |
|
|
bool |
decreaseSuspendCount |
|
) |
| |
|
inlineprotected |
Releases (unlocks) a mutex for read or write modes.
- Parameters
-
write | If set to true, write mode is used, otherwise read mode |
decreaseSuspendCount | If set to true, it will decrease a suspend count |
- Returns
- True if successful
Definition at line 837 of file xsens_mutex.h.
◆ releaseMutex() [2/2]
bool xsens::MutexReadWriteSuspendable::releaseMutex |
( |
Mode |
mode, |
|
|
bool |
decreaseSuspendCount |
|
) |
| |
|
inlineprotected |
Releases (unlocks) a mutex using a given mode.
- Parameters
-
mode | The mode to use |
decreaseSuspendCount | If set to true, it will decrease a suspend count |
- Returns
- True if successful
Definition at line 887 of file xsens_mutex.h.
◆ resumeWriteLock()
bool xsens::MutexReadWriteSuspendable::resumeWriteLock |
( |
| ) |
|
|
inlineprotected |
Resumes an existing write lock so read locks are no longer allowed.
Definition at line 794 of file xsens_mutex.h.
◆ status()
int xsens::MutexReadWriteSuspendable::status |
( |
| ) |
const volatile |
|
inline |
◆ suspendWriteLock()
bool xsens::MutexReadWriteSuspendable::suspendWriteLock |
( |
| ) |
|
|
inlineprotected |
Suspend an existing write lock so read locks are allowed, but do not allow other write locks.
Definition at line 778 of file xsens_mutex.h.
◆ LockSuspendable
◆ m_access
Mutex xsens::MutexReadWriteSuspendable::m_access |
|
private |
◆ m_readLockCount
int xsens::MutexReadWriteSuspendable::m_readLockCount |
|
private |
◆ m_readLocked
XsThreadId* xsens::MutexReadWriteSuspendable::m_readLocked |
|
private |
◆ m_readLockMax
int xsens::MutexReadWriteSuspendable::m_readLockMax |
|
private |
◆ m_writeLocked
volatile std::atomic<XsThreadId> xsens::MutexReadWriteSuspendable::m_writeLocked |
|
private |
◆ m_writeLocksPending
volatile std::atomic_int xsens::MutexReadWriteSuspendable::m_writeLocksPending |
|
private |
◆ m_writeLockSuspendCount
volatile std::atomic_int xsens::MutexReadWriteSuspendable::m_writeLockSuspendCount |
|
private |
◆ m_writeRef
volatile std::atomic_int xsens::MutexReadWriteSuspendable::m_writeRef |
|
private |
The documentation for this class was generated from the following file: