Yate: Mutex Class Reference

Yate

Public Member Functions | Static Public Member Functions | Friends | List of all members
Mutex Class Reference

Mutex support. More...

`#include <yateclass.h>`

Inheritance diagram for Mutex:

## Public Member Functions
| Mutex (bool recursive=false, const char *name=0)
| Mutex (const Mutex &original)
| ~Mutex ()
Mutex & | operator= (const Mutex &original)
virtual bool | lock (long maxwait=-1)
virtual bool | unlock ()
virtual bool | locked () const
const char * | owner () const
bool | recursive () const
virtual Mutex * | lockableMutex ()
Public Member Functions inherited from Lockable
virtual | ~Lockable ()
virtual bool | check (long maxwait=-1)
virtual bool | unlockAll ()
virtual Semaphore * | lockableSemaphore ()
virtual RWLock * | lockableRWLock ()

## 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

  recursive | True if the mutex has to be recursive (reentrant), false for a normal fast mutex
  name | Static 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

  original | Reference 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

  maxwait | Time 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

  original | Reference 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:

- yateclass.h