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

corelinux::GatewaySemaphore Class Reference

GatewaySemphore enables a depth of resource indicator. More...

#include <GatewaySemaphore.hpp>

Inheritance diagram for corelinux::GatewaySemaphore

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

Collaboration graph
[legend]
List of all members.

Public Methods

 GatewaySemaphore ( SemaphoreGroupPtr, SemaphoreIdentifierRef, Count , bool Recursive = false, bool Balking = false ) throw ( NullPointerException )
 Default constructor requires the identifier of the semaphore in the semaphore group and a count of resources for control. More...

virtual ~GatewaySemaphore ( void )
 Virtual Destructor.

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

virtual bool isAnOwner ( void )
 Returns true if calling thread owns a resource.

virtual Counter getOwnerRecursionQueueLength ( void )
 Returns the recursion depth for the calling thread. More...

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

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

virtual SemaphoreOperationStatus release (void) throw ( SemaphoreException )
 Release the lock.


Protected Methods

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

 GatewaySemaphore ( GatewaySemaphoreCref ) throw ( Assertion )
 Copy constructor throws assertion.

GatewaySemaphoreRef operator= ( GatewaySemaphoreCref ) throw ( Assertion )
 Assignment operator throws assertion.

SemaphoreOperationStatus lockAndAdd ( ThreadIdentifierRef aTid, Int aFlag = 0 )

Detailed Description

GatewaySemphore enables a depth of resource indicator.

Unlike the tradition boolean semaphore (locked,unlocked), this type assumes a finite number of threads/processes can be granted access up to theResourceMaximum. The semantics regarding semaphore and recursion in relationship to the GatewaySemaphore is as follows:

With recursion enabled:


Constructor & Destructor Documentation

corelinux::GatewaySemaphore::GatewaySemaphore ( SemaphoreGroupPtr aGroup,
SemaphoreIdentifierRef aIdentifier,
Count aValue,
bool aRecursionFlag = false,
bool aBalkingFlag = false ) throw ( NullPointerException )
 

Default constructor requires the identifier of the semaphore in the semaphore group and a count of resources for control.

Parameters:
SemaphoreGroupPtr   The owning SemaphoreGroup
SemaphoreIdentifier   The identifier for the Semaphore from the SemaphoreGroup
Count   number of resources the semaphore controls
bool   true if recursion enabled
bool   true if balking enabled


Member Function Documentation

Counter corelinux::GatewaySemaphore::getOwnerRecursionQueueLength ( void ) [virtual]
 

Returns the recursion depth for the calling thread.

Returns:
Counter -1 if not an owner, 0 if owner but not recursed, or > 0 for recursion depth.


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