Qore Programming Language  0.8.7
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
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 destructor (ExceptionSink *xsink)
 throws a Qore-language exception if there are any waiting threads and wakes them all up
 
DLLEXPORT void inc ()
 increments the counter
 
DLLEXPORT void dec (ExceptionSink *xsink)
 decrements the counter and wakes up any threads if the counter reaches 0
 
DLLEXPORT int waitForZero (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 ( 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: