Qore Programming Language  0.8.11.1
Public Member Functions | List of all members
QoreCounter Class Reference

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

#include <QoreCounter.h>

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 dec (ExceptionSink *xsink)
 decrements the counter and wakes up any threads if the counter reaches 0 More...
 
DLLEXPORT void destructor (ExceptionSink *xsink)
 throws a Qore-language exception if there are any waiting threads and wakes them all up
 
DLLEXPORT int getCount () const
 returns the current count
 
DLLEXPORT int getWaiting () const
 returns the number of threads blocked on this object
 
DLLEXPORT void inc ()
 increments the counter
 
DLLEXPORT int waitForZero (ExceptionSink *xsink, int timeout_ms=0)
 blocks the calling thread until the counter reaches 0 More...
 

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 ( 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
xsinkany Qore-language exception thrown will be added here
DLLEXPORT int QoreCounter::waitForZero ( 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
xsinkany Qore-language exception thrown will be added here
timeout_msindicates a timeout in milliseconds to wait, 0 means no timeout
Returns
non-zero means an exception was thrown

Referenced by QoreProgramHelper::~QoreProgramHelper().


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