NAME
corelinux::GatewaySemaphore - GatewaySemphore enables a depth of resource indicator.
SYNOPSIS
#include <GatewaySemaphore.hpp>
Inherits corelinux::Semaphore.
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:
- •
-
Semaphore::getOwningThreadIdentifier returns the ThreadIdentifier of the thread that pushed the value to zero(0).
- •
-
Semaphore::getRecursionQueueLength returns the depth of recursion by Semaphore::getOwningThreadIdentifier
- •
-
GatewaySemaphore::isAnOwner returns true if the current thread is in the set of threads that own a resource.
- •
-
GatewaySemaphore::getOwnerRecursionQueueLength returns either -1 if the current thread does not control a resource, 0 if the current thread does own a resource, but has not recursed, or returns the depth of recursion for the calling thread.
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.
Author
Generated automatically by Doxygen for CoreLinux++ from the source code.