Main MRPT website > C++ reference for MRPT 1.4.0
List of all members | Public Member Functions | Protected Attributes
mrpt::synch::CSemaphore Class Reference

Detailed Description

A semaphore for inter-thread synchronization.

The state of a semaphore object is signaled when its count is greater than zero, and nonsignaled when its count is equal to zero. The initialCount parameter specifies the initial count. Each time a waiting thread is released because of the semaphore's signaled state, the count of the semaphore is decreased by one. Use the release function to increment a semaphore's count by a specified amount. The count can never be less than zero or greater than the value specified in the maxCount parameter.

Definition at line 31 of file CSemaphore.h.

#include <mrpt/synch/CSemaphore.h>

Public Member Functions

 CSemaphore (unsigned int initialCount, unsigned int maxCount, const std::string &name=std::string(""))
 Creates a semaphore. More...
 
virtual ~CSemaphore ()
 Destructor. More...
 
bool waitForSignal (unsigned int timeout_ms=0)
 Blocks until the count of the semaphore to be non-zero. More...
 
void release (unsigned int increaseCount=1)
 Increments the count of the semaphore by a given amount. More...
 
std::string getName () const
 Get the name of the named semaphore or an empty string if it's unnamed. More...
 
bool isNamed () const
 Return true if this is a named semaphore. More...
 

Protected Attributes

mrpt::utils::CReferencedMemBlock m_data
 
std::string m_name
 The name of the named semaphore, or empty if unnamed. More...
 

Constructor & Destructor Documentation

◆ CSemaphore()

mrpt::synch::CSemaphore::CSemaphore ( unsigned int  initialCount,
unsigned int  maxCount,
const std::string &  name = std::string("") 
)

Creates a semaphore.

If name is not an empty string, a named semaphore is created. In that case if the semaphore didn't exist it's created. Otherwise, the existing semaphore is linked to this object and then initialCount and maxCount are ignored.

Note
Named semaphores require Linux kernel version>2.6.12

◆ ~CSemaphore()

virtual mrpt::synch::CSemaphore::~CSemaphore ( )
virtual

Destructor.

Member Function Documentation

◆ getName()

std::string mrpt::synch::CSemaphore::getName ( ) const
inline

Get the name of the named semaphore or an empty string if it's unnamed.

Definition at line 65 of file CSemaphore.h.

◆ isNamed()

bool mrpt::synch::CSemaphore::isNamed ( ) const
inline

Return true if this is a named semaphore.

Definition at line 68 of file CSemaphore.h.

◆ release()

void mrpt::synch::CSemaphore::release ( unsigned int  increaseCount = 1)

Increments the count of the semaphore by a given amount.

◆ waitForSignal()

bool mrpt::synch::CSemaphore::waitForSignal ( unsigned int  timeout_ms = 0)

Blocks until the count of the semaphore to be non-zero.

Parameters
timeout_msThe timeout in milliseconds, or set to zero to wait indefinidely.
Returns
true if the semaphore has been signaled, false on timeout or any other error.

Member Data Documentation

◆ m_data

mrpt::utils::CReferencedMemBlock mrpt::synch::CSemaphore::m_data
protected

Definition at line 34 of file CSemaphore.h.

◆ m_name

std::string mrpt::synch::CSemaphore::m_name
protected

The name of the named semaphore, or empty if unnamed.

Definition at line 35 of file CSemaphore.h.




Page generated by Doxygen 1.9.1 for MRPT 1.4.0 SVN: at Mon Apr 18 03:37:47 UTC 2022