---
name: "corelinux_MutexSemaphore"
section: "3"
platform: "linux"
package: "libcorelinux-dev"
version: "0.4.32-5"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/corelinux_MutexSemaphore"
---

# corelinux\_MutexSemaphore(3)

MutexSemaphore implements a mutual exclusion control which can be used to insure that at most one (1) task has access at a time.

## NAME

corelinux::MutexSemaphore - **MutexSemaphore** implements a mutual exclusion control which can be used to insure that at most one (1) task has access at a time.

## SYNOPSIS

`#include <MutexSemaphore.hpp>`

Inherits **corelinux::Semaphore**.

### Public Member Functions

**MutexSemaphore** (**SemaphoreGroupPtr**, **SemaphoreIdentifierRef**, bool AutoLock=false, bool Recursive=true, bool Balking=false)  throw ( NullPointerException )\
 *Default constructor requires the identifier of the semaphore in the semaphore group.*  virtual **~MutexSemaphore** (void)\
 *Virtual Destructor.*  virtual bool **isLocked** (void)\
 *Ask if semaphore instance is locked.*  virtual **SemaphoreOperationStatus** **lockWithWait** (void)  throw (SemaphoreException)\
 **Request** *the semaphore, wait for availability.*  virtual **SemaphoreOperationStatus** **lockWithNoWait** (void)  throw (SemaphoreException)\
 **Request** *the semaphore without waiting.*  virtual **SemaphoreOperationStatus** **release** (void)  throw (SemaphoreException)\
 *Release the semaphore if owner.*

### Protected Member Functions

**MutexSemaphore** (void)  throw ( Assertion )\
 *Default construct throws assert.*  **MutexSemaphore** (**MutexSemaphoreCref**)  throw ( Assertion )\
 *Copy constructor throws assertion.*  **MutexSemaphoreRef** **operator=** (**MutexSemaphoreCref**)  throw ( Assertion )\
 *Assignment operator throws assertion.*

## Detailed Description

**MutexSemaphore** implements a mutual exclusion control which can be used to insure that at most one (1) task has access at a time.

The semantics for Recursion: The thread that is successful is obtaining the lock will be regarded as theOwningThreadIdentifier. If, upon a lock request, it is determined that the same thread that owns the lock is asking to lock again, theRecursionQueueLength will be incremented. It is thereafter neccessary for theOwningThread to release the semaphore until theRecursionQueueLength returns to zero (0). All other callers will block or not based on their lock call disposition.

## Constructor & Destructor Documentation

### corelinux::MutexSemaphore::MutexSemaphore (SemaphoreGroupPtr, SemaphoreIdentifierRef, bool AutoLock = false, bool Recursive = true, bool Balking = false) throw ( NullPointerException )

Default constructor requires the identifier of the semaphore in the semaphore group. **Parameters:**

*SemaphoreGroup* pointer to the owning **SemaphoreGroup** \
 *SemaphoreIdentifier* The identifier for the **Semaphore** from the **SemaphoreGroup** \
 *bool* true if autolock on creation \
 *bool* true if recursion enabled \
 *bool* true if balking enabled

## Author

Generated automatically by Doxygen for CoreLinux++ from the source code.
