Yate
Mutex Class Reference

Mutex support. More...

#include <yateclass.h>

Inheritance diagram for Mutex:
Lockable ClientAccount ClientAccountList DataSource MessageQueue Module SharedVars ThreadedSource Driver ClientDriver

Public Member Functions

 Mutex (bool recursive=false, const char *name=0)
 Mutex (const Mutex &original)
 ~Mutex ()
Mutexoperator= (const Mutex &original)
virtual bool lock (long maxwait=-1)
virtual bool unlock ()
virtual bool locked () const
const char * owner () const
bool recursive () const
virtual MutexlockableMutex ()
Public Member Functions inherited from Lockable
virtual ~Lockable ()
virtual bool check (long maxwait=-1)
virtual bool unlockAll ()
virtual SemaphorelockableSemaphore ()
virtual RWLocklockableRWLock ()

Static Public Member Functions

static int count ()
static int locks ()
static bool efficientTimedLock ()
Static Public Member Functions inherited from Lockable
static void wait (unsigned long maxwait)
static unsigned long wait ()
static void startUsingNow ()
static void enableSafety (bool safe=true)
static bool safety ()

Friends

class MutexPrivate

Detailed Description

Mutex support.

A simple mutual exclusion for locking access between threads

Constructor & Destructor Documentation

◆ Mutex() [1/2]

Mutex ( bool recursive = false,
const char * name = 0 )
explicit

Construct a new unlocked mutex

Parameters
recursiveTrue if the mutex has to be recursive (reentrant), false for a normal fast mutex
nameStatic name of the mutex (for debugging purpose only)

References recursive().

Referenced by ClientAccountList::ClientAccountList(), DataSource::DataSource(), lockableMutex(), Mutex(), operator=(), and SharedVars::SharedVars().

◆ Mutex() [2/2]

Mutex ( const Mutex & original)

Copy constructor, creates a shared mutex

Parameters
originalReference of the mutex to share

References Mutex().

◆ ~Mutex()

~Mutex ( )

Destroy the mutex

Member Function Documentation

◆ count()

int count ( )
static

Get the number of mutexes counting the shared ones only once

Returns
Count of individual mutexes

◆ efficientTimedLock()

bool efficientTimedLock ( )
static

Check if a timed lock() is efficient on this platform

Returns
True if a lock with a maxwait parameter is efficiently implemented

◆ lock()

virtual bool lock ( long maxwait = -1)
virtual

Attempt to lock the mutex and eventually wait for it

Parameters
maxwaitTime in microseconds to wait for the mutex, -1 wait forever
Returns
True if successfully locked, false on failure

Implements Lockable.

◆ lockableMutex()

virtual Mutex * lockableMutex ( )
inlinevirtual

Retrieve a Mutex from this object

Returns
Mutex pointer

Reimplemented from Lockable.

References Mutex().

◆ locked()

virtual bool locked ( ) const
virtual

Check if the mutex is currently locked - as it's asynchronous it guarantees nothing if other thread changes the mutex's status

Returns
True if the mutex was locked when the function was called

Implements Lockable.

◆ locks()

int locks ( )
static

Get the number of currently locked mutexes

Returns
Count of locked mutexes, -1 if unknown (not tracked)

◆ operator=()

Mutex & operator= ( const Mutex & original)

Assignment operator makes the mutex shared with the original

Parameters
originalReference of the mutex to share

References Mutex().

◆ owner()

const char * owner ( ) const

Retrieve the name of the Thread (if any) holding the Mutex locked

Returns
Thread name() or NULL if thread not named

◆ recursive()

bool recursive ( ) const

Check if this mutex is recursive or not

Returns
True if this is a recursive mutex, false for a fast mutex

Referenced by Mutex().

◆ unlock()

virtual bool unlock ( )
virtual

Unlock the mutex, does never wait

Returns
True if successfully unlocked the mutex

Implements Lockable.


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