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 Member Functions

 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.
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.
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 Member Functions

 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  ,
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.

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