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

corelinux::Semaphore corelinux::AbstractSemaphore corelinux::Synchronized 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