ucc::semaphore Class Reference

A portable counting semaphore class. More...

#include <thread.h>

Inheritance diagram for ucc::semaphore:

Inheritance graph
[legend]
Collaboration diagram for ucc::semaphore:

Collaboration graph
[legend]

Public Member Functions

 semaphore (unsigned count=0)
 Construct a semaphore with an initial count of threads to permit.
void wait (void)
 Wait until the semphore usage count is less than the thread limit.
bool wait (timeout_t timeout)
 Wait until the semphore usage count is less than the thread limit.
unsigned getCount (void)
 Get active semaphore limit.
unsigned getUsed (void)
 Get current semaphore usage.
void set (unsigned count)
 Alter semaphore limit at runtime.
void release (void)
 Release the semaphore after waiting for it.
void operator++ (void)
 Convenience operator to wait on a counting semaphore.
void operator-- (void)
 Convenience operator to release a counting semaphore.

Static Public Member Functions

static void wait (semaphore &sync)
 Convenience class to wait on a semaphore.
static bool wait (semaphore &sync, timeout_t timeout)
 Convenience class to wait on a semaphore.
static void release (semaphore &sync)
 Convenience class to release a semaphore.

Detailed Description

A portable counting semaphore class.

A semaphore will allow threads to pass through it until the count is reached, and blocks further threads. Unlike pthread semaphore, our semaphore class supports it's count limit to be altered during runtime and the use of timed waits. This class also implements the shared_lock protocol.

Author:
David Sugar <dyfet@gnutelephony.org>

Definition at line 975 of file thread.h.


Member Function Documentation

unsigned ucc::semaphore::getCount ( void   ) 

Get active semaphore limit.

Returns:
count of maximum threads to pass.

unsigned ucc::semaphore::getUsed ( void   ) 

Get current semaphore usage.

Returns:
number of active threads.

static void ucc::semaphore::release ( semaphore sync  )  [inline, static]

Convenience class to release a semaphore.

Parameters:
sync object to release.

Definition at line 1059 of file thread.h.

Here is the call graph for this function:

void ucc::semaphore::set ( unsigned  count  ) 

Alter semaphore limit at runtime.

Parameters:
count of threads to allow.

static bool ucc::semaphore::wait ( semaphore sync,
timeout_t  timeout 
) [inline, static]

Convenience class to wait on a semaphore.

Parameters:
sync object to wait on.
timeout in milliseconds.
Returns:
if success, false if timeout.

Definition at line 1052 of file thread.h.

Here is the call graph for this function:

static void ucc::semaphore::wait ( semaphore sync  )  [inline, static]

Convenience class to wait on a semaphore.

Parameters:
sync object to wait on.

Definition at line 1043 of file thread.h.

Here is the call graph for this function:

bool ucc::semaphore::wait ( timeout_t  timeout  ) 

Wait until the semphore usage count is less than the thread limit.

Increase used count for our thread when unblocked, or return without changing if timed out.

Parameters:
timeout to wait in millseconds.
Returns:
true if success, false if timeout.

Reimplemented from ucc::Conditional.

void ucc::semaphore::wait ( void   ) 

Wait until the semphore usage count is less than the thread limit.

Increase used count for our thread when unblocked.

Reimplemented from ucc::Conditional.


The documentation for this class was generated from the following file:

Generated on Tue Jul 28 21:43:18 2009 for UCommon by  doxygen 1.5.9