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)

◆ Mutex() [2/2]

Mutex ( const Mutex & original)

Copy constructor, creates a shared mutex

Parameters
originalReference of the mutex to share

◆ ~Mutex()

~Mutex ( )

Destroy the mutex

Member Function Documentation

◆ count()

static int count ( )
static

Get the number of mutexes counting the shared ones only once

Returns
Count of individual mutexes

◆ efficientTimedLock()

static 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.

◆ 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()

static 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

◆ 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

◆ 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: