QoreCounter Class Reference

a simple thread-safe counter object; objects can block on it until the counter reaches zero More...

#include <QoreCounter.h>

List of all members.

Public Member Functions

DLLEXPORT QoreCounter (int nc=0)
 creates the counter and initializes the count
DLLEXPORT ~QoreCounter ()
 destroys the object and frees all memory
DLLEXPORT void destructor (class ExceptionSink *xsink)
 throws an exception if there are any waiting threads and wakes them all up
DLLEXPORT void inc ()
 increments the counter
DLLEXPORT void dec (class ExceptionSink *xsink)
 decrements the counter and wakes up any threads if the counter reaches 0
DLLEXPORT int waitForZero (class ExceptionSink *xsink, int timeout_ms=0)
 blocks the calling thread until the counter reaches 0
DLLEXPORT int getCount () const
 returns the current count
DLLEXPORT int getWaiting () const
 returns the number of threads blocked on this object


Detailed Description

a simple thread-safe counter object; objects can block on it until the counter reaches zero

Member Function Documentation

DLLEXPORT void QoreCounter::dec ( class ExceptionSink xsink  ) 

decrements the counter and wakes up any threads if the counter reaches 0

a Qore-language exception will be raised here if QoreCounter::destructor() has already been run before calling this function.

Parameters:
xsink any Qore-language exception thrown will be added here

DLLEXPORT int QoreCounter::waitForZero ( class ExceptionSink xsink,
int  timeout_ms = 0 
)

blocks the calling thread until the counter reaches 0

a Qore-language exception will be raised here if QoreCounter::destructor() is run while threads are still blocked

Parameters:
xsink any Qore-language exception thrown will be added here
timeout_ms indicates a timeout in milliseconds to wait, 0 means no timeout
Returns:
non-zero means an exception was thrown


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

doxygen