UCommon
Data Structures | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes
ucommon::Mutex Class Reference

Generic non-recursive exclusive lock class. More...

#include <thread.h>

Inheritance diagram for ucommon::Mutex:
Inheritance graph
[legend]
Collaboration diagram for ucommon::Mutex:
Collaboration graph
[legend]

Data Structures

class  gaurd
 Gaurd class to apply scope based mutex locking to objects. More...

Public Member Functions

void acquire (void)
 Acquire mutex lock.
void lock (void)
 Acquire mutex lock.
 Mutex ()
 Create a mutex lock.
void release (void)
 Release acquired lock.
void unlock (void)
 Release acquired lock.
 ~Mutex ()
 Destroy mutex lock, release waiting threads.
- Public Member Functions inherited from ucommon::ExclusiveProtocol
void Lock (void)
 A convenience member function for accessing the exclusive lock.

Static Public Member Functions

static void acquire (Mutex &lock)
 Convenience function to acquire a mutex lock.
static void acquire (pthread_mutex_t *lock)
 Convenience function to acquire os native mutex lock directly.
static void indexing (unsigned size)
 Specify hash table size for gaurd protection.
static void lock (Mutex &lock)
 Convenience function to acquire a mutex lock.
static void lock (pthread_mutex_t *lock)
 Convenience function to acquire os native mutex lock directly.
static void protect (void *pointer)
 Specify pointer/object/resource to gaurd protect.
static void release (Mutex &lock)
 Convenience function to release an aquired mutex lock.
static void release (pthread_mutex_t *lock)
 Convenience function to release os native mutex lock directly.
static void release (void *pointer)
 Specify a pointer/object/resource to release.
static void unlock (Mutex &lock)
 Convenience function to release an aquired mutex lock.
static void unlock (pthread_mutex_t *lock)
 Convenience function to release os native mutex lock directly.

Protected Member Functions

void Exlock (void)
 Protocol interface to exclusive lock the object.
void Unlock (void)
 Protocol interface to release a lock.

Protected Attributes

pthread_mutex_t mlock

Detailed Description

Generic non-recursive exclusive lock class.

This class also impliments the exclusive_lock protocol. In addition, an interface is offered to support dynamically managed mutexes which are internally pooled. These can be used to protect and serialize arbitrary access to memory and objects on demand. This offers an advantage over embedding mutexes to serialize access to individual objects since the maximum number of mutexes will never be greater than the number of actually running threads rather than the number of objects being potentially protected. The ability to hash the pointer address into an indexed table further optimizes access by reducing the chance for collisions on the primary index mutex.

Author
David Sugar dyfet.nosp@m.@gnu.nosp@m.telep.nosp@m.hony.nosp@m..org

Definition at line 1124 of file thread.h.

Member Function Documentation

void ucommon::Mutex::acquire ( void  )
inline

Acquire mutex lock.

This is a blocking operation.

Definition at line 1198 of file thread.h.

static void ucommon::Mutex::acquire ( Mutex lock)
inlinestatic

Convenience function to acquire a mutex lock.

Parameters
lockto acquire.

Definition at line 1223 of file thread.h.

static void ucommon::Mutex::acquire ( pthread_mutex_t *  lock)
inlinestatic

Convenience function to acquire os native mutex lock directly.

Parameters
lockto acquire.

Definition at line 1251 of file thread.h.

static void ucommon::Mutex::indexing ( unsigned  size)
static

Specify hash table size for gaurd protection.

The default is 1. This should be called at initialization time from the main thread of the application before any other threads are created.

Parameters
sizeof hash table used for gaurding.
void ucommon::Mutex::lock ( void  )
inline

Acquire mutex lock.

This is a blocking operation.

Definition at line 1204 of file thread.h.

static void ucommon::Mutex::lock ( Mutex lock)
inlinestatic

Convenience function to acquire a mutex lock.

Parameters
lockto acquire.

Definition at line 1230 of file thread.h.

static void ucommon::Mutex::lock ( pthread_mutex_t *  lock)
inlinestatic

Convenience function to acquire os native mutex lock directly.

Parameters
lockto acquire.

Definition at line 1258 of file thread.h.

static void ucommon::Mutex::protect ( void *  pointer)
static

Specify pointer/object/resource to gaurd protect.

This uses a dynamically managed mutex.

Parameters
pointerto protect.
static void ucommon::Mutex::release ( Mutex lock)
inlinestatic

Convenience function to release an aquired mutex lock.

Parameters
lockto acquire.

Definition at line 1244 of file thread.h.

static void ucommon::Mutex::release ( pthread_mutex_t *  lock)
inlinestatic

Convenience function to release os native mutex lock directly.

Parameters
lockto release.

Definition at line 1272 of file thread.h.

static void ucommon::Mutex::release ( void *  pointer)
static

Specify a pointer/object/resource to release.

Parameters
pointerto release.
static void ucommon::Mutex::unlock ( Mutex lock)
inlinestatic

Convenience function to release an aquired mutex lock.

Parameters
lockto acquire.

Definition at line 1237 of file thread.h.

static void ucommon::Mutex::unlock ( pthread_mutex_t *  lock)
inlinestatic

Convenience function to release os native mutex lock directly.

Parameters
lockto release.

Definition at line 1265 of file thread.h.


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