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

corelinux::Semaphore Class Reference

A Semaphore supports the protocol that processes and/or threads agree to follow for the purpose of controlled access to a resource. More...

#include <Semaphore.hpp>

Inheritance diagram for corelinux::Semaphore

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

Collaboration graph
[legend]
List of all members.

Public Methods

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

virtual ~Semaphore ( void )
 Virtual Destructor.

bool operator== ( SemaphoreCref aRef ) const
 Equality operator returns true if identifiers match.

virtual bool isBalkingEnabled ( void ) const
 Returns true if balking enabled.

virtual bool isRecursionEnabled ( void ) const
 Returns true if recursion allowed.

virtual ThreadIdentifierCref getOwningThreadIdentifier ( void ) const
 Returns the identifier of who currently owns the semaphore.

virtual CounterCref getRecursionQueueLength ( void ) const
 Return the depth of the recursion for the owner.


Protected Methods

 Semaphore ( void ) throw (Assertion)
 Default constructor throws assertion.

 Semaphore ( SemaphoreCref ) throw (Assertion)
 Copy constructor throws assertion.

SemaphoreRef operator= ( SemaphoreCref ) throw (Assertion)
 Assignment operator throws assertion.

CounterCref operator++ ( void )
 Operator for increasing theRecursionQueueLength.

CounterCref operator-- ( void )
 Operator for decreasing theRecursionQueueLength.

virtual ThreadIdentifierRef getOwnerId ( void )
 Returns a reference to the owning thread.

virtual void setOwnerId ( void )
 Sets the owner id to the current thread.

virtual void setRecursionQueueLength ( Counter )
 Sets the recursion length.

virtual void resetOwnerId ( void )
 Sets the owner thread id to not owned.


Detailed Description

A Semaphore supports the protocol that processes and/or threads agree to follow for the purpose of controlled access to a resource.

The resource can be anything that the developer considers to need access controls on such as memory, hardware, methods, computer instructions, and so on.

Callers can elect to avoid being put into a blocked state and return immediately without control to the resource. Callers may also request that they are put into a blocked state for a specified amount of time. If, at the end of the specified time, the request has not been satisfied, it is returned with a Timeout indicator.

The owner or creator of the semaphore can elect to enforce balking behavior on a Semaphore. When so designated, the Semaphore can turn back any request until some condition in their solution space is met regardless of the callers blocking options. If a caller access attempt is balked, is it returned with a Balked indicator.


Constructor & Destructor Documentation

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

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

Parameters:
SemaphoreGroupPtr   The owning SemaphoreGroup
SemaphoreIdentifier   The identifier from the Semaphore Group
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