Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
xsens::MutexReadWrite Class Reference

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
 
MutexReadWriteoperator= (MutexReadWrite &&)=delete
 
MutexReadWriteoperator= (MutexReadWrite const &)=delete
 
bool releaseMutex (bool write)
 
bool tryClaimMutex (bool write, uint32_t timeout)
 

Private Attributes

Mutex m_access
 
int m_readLockCount
 
XsThreadIdm_readLocked
 
int m_readLockMax
 
volatile std::atomic< XsThreadIdm_writeLocked
 
volatile std::atomic_int m_writeLocksPending
 
volatile std::atomic_int m_writeRef
 

Friends

class LockReadWrite
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ MutexReadWrite() [1/3]

xsens::MutexReadWrite::MutexReadWrite ( MutexReadWrite const &  )
privatedelete

◆ MutexReadWrite() [2/3]

xsens::MutexReadWrite::MutexReadWrite ( MutexReadWrite &&  )
privatedelete

◆ MutexReadWrite() [3/3]

xsens::MutexReadWrite::MutexReadWrite ( )
inline

Definition at line 266 of file xsens_mutex.h.

◆ ~MutexReadWrite()

xsens::MutexReadWrite::~MutexReadWrite ( )
inline

Definition at line 275 of file xsens_mutex.h.

Member Function Documentation

◆ addReadLock()

void xsens::MutexReadWrite::addReadLock ( XsThreadId  cid)
inlineprivate

Definition at line 280 of file xsens_mutex.h.

◆ claimMutex()

bool xsens::MutexReadWrite::claimMutex ( bool  write)
inlineprivate

Definition at line 303 of file xsens_mutex.h.

◆ downgradeToRead()

bool xsens::MutexReadWrite::downgradeToRead ( )
inlineprivate

Downgrade an existing write lock to a read lock.

Definition at line 373 of file xsens_mutex.h.

◆ enterAtomic()

void xsens::MutexReadWrite::enterAtomic ( )
inlineprivate

Definition at line 293 of file xsens_mutex.h.

◆ haveReadClaim()

bool xsens::MutexReadWrite::haveReadClaim ( ) const
inlineprivate

Definition at line 524 of file xsens_mutex.h.

◆ haveWriteClaim()

bool xsens::MutexReadWrite::haveWriteClaim ( ) const
inlineprivate

Definition at line 512 of file xsens_mutex.h.

◆ leaveAtomic()

void xsens::MutexReadWrite::leaveAtomic ( )
inlineprivate

Definition at line 298 of file xsens_mutex.h.

◆ operator=() [1/2]

MutexReadWrite& xsens::MutexReadWrite::operator= ( MutexReadWrite &&  )
privatedelete

◆ operator=() [2/2]

MutexReadWrite& xsens::MutexReadWrite::operator= ( MutexReadWrite const &  )
privatedelete

◆ releaseMutex()

bool xsens::MutexReadWrite::releaseMutex ( bool  write)
inlineprivate

Definition at line 389 of file xsens_mutex.h.

◆ tryClaimMutex()

bool xsens::MutexReadWrite::tryClaimMutex ( bool  write,
uint32_t  timeout 
)
inlineprivate

Definition at line 428 of file xsens_mutex.h.

Friends And Related Function Documentation

◆ LockReadWrite

friend class LockReadWrite
friend

Definition at line 259 of file xsens_mutex.h.

Member Data Documentation

◆ m_access

Mutex xsens::MutexReadWrite::m_access
private

Definition at line 251 of file xsens_mutex.h.

◆ m_readLockCount

int xsens::MutexReadWrite::m_readLockCount
private

Definition at line 258 of file xsens_mutex.h.

◆ m_readLocked

XsThreadId* xsens::MutexReadWrite::m_readLocked
private

Definition at line 255 of file xsens_mutex.h.

◆ m_readLockMax

int xsens::MutexReadWrite::m_readLockMax
private

Definition at line 257 of file xsens_mutex.h.

◆ m_writeLocked

volatile std::atomic<XsThreadId> xsens::MutexReadWrite::m_writeLocked
private

Definition at line 253 of file xsens_mutex.h.

◆ m_writeLocksPending

volatile std::atomic_int xsens::MutexReadWrite::m_writeLocksPending
private

Definition at line 254 of file xsens_mutex.h.

◆ m_writeRef

volatile std::atomic_int xsens::MutexReadWrite::m_writeRef
private

Definition at line 252 of file xsens_mutex.h.


The documentation for this class was generated from the following file:


xsens_mti_driver
Author(s):
autogenerated on Sun Sep 3 2023 02:43:23