Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Examples  

corelinux::MutexSemaphore Class Reference

MutexSemaphore implements a mutual exclusion control which can be used to insure that at most one (1) task has access at a time. More...

#include <MutexSemaphore.hpp>

Inheritance diagram for corelinux::MutexSemaphore

Inheritance graph
[legend]
Collaboration diagram for corelinux::MutexSemaphore:

Collaboration graph
[legend]
List of all members.

Public Methods

 MutexSemaphore ( SemaphoreGroupPtr, SemaphoreIdentifierRef, bool AutoLock = false, bool Recursive = true, bool Balking = false ) throw ( NullPointerException )
 Default constructor requires the identifier of the semaphore in the semaphore group. More...

virtual ~MutexSemaphore ( void )
 Virtual Destructor.

virtual bool isLocked ( void )
 Ask if semaphore instance is locked.

virtual SemaphoreOperationStatus lockWithWait ( void ) throw (SemaphoreException)
 Request the semaphore, wait for availability.

virtual SemaphoreOperationStatus lockWithNoWait ( void ) throw (SemaphoreException)
 Request the semaphore without waiting.

virtual SemaphoreOperationStatus release ( void ) throw (SemaphoreException)
 Release the semaphore if owner.


Protected Methods

 MutexSemaphore ( void ) throw ( Assertion )
 Default construct throws assert.

 MutexSemaphore ( MutexSemaphoreCref ) throw ( Assertion )
 Copy constructor throws assertion.

MutexSemaphoreRef operator= ( MutexSemaphoreCref ) throw ( Assertion )
 Assignment operator throws assertion.


Detailed Description

MutexSemaphore implements a mutual exclusion control which can be used to insure that at most one (1) task has access at a time.

The semantics for Recursion: The thread that is successful is obtaining the lock will be regarded as theOwningThreadIdentifier. If, upon a lock request, it is determined that the same thread that owns the lock is asking to lock again, theRecursionQueueLength will be incremented. It is thereafter neccessary for theOwningThread to release the semaphore until theRecursionQueueLength returns to zero (0). All other callers will block or not based on their lock call disposition.


Constructor & Destructor Documentation

corelinux::MutexSemaphore::MutexSemaphore ( SemaphoreGroupPtr aGroup,
SemaphoreIdentifierRef aIdentifier,
bool aAutoLockFlag = false,
bool aRecursionFlag = true,
bool aBalkingFlag = false ) throw ( NullPointerException )
 

Default constructor requires the identifier of the semaphore in the semaphore group.

Parameters:
SemaphoreGroup   pointer to the owning SemaphoreGroup
SemaphoreIdentifier   The identifier for the Semaphore from the SemaphoreGroup
bool   true if autolock on creation
bool   true if recursion enabled
bool   true if balking enabled


The documentation for this class was generated from the following files:
This is the CoreLinux++ reference manual
Provided by The CoreLinux Consortium