diff options
Diffstat (limited to 'src/shared/Threading.h')
-rw-r--r-- | src/shared/Threading.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/shared/Threading.h b/src/shared/Threading.h index ab423696cd1..6c3f3724bc1 100644 --- a/src/shared/Threading.h +++ b/src/shared/Threading.h @@ -21,6 +21,7 @@ #include <ace/Thread.h> #include <ace/TSS_T.h> +#include "ace/Atomic_Op.h" #include <assert.h> #include "Errors.h" @@ -32,6 +33,15 @@ namespace ACE_Based public: virtual ~Runnable() {} virtual void run() = 0; + + void incReference() { ++m_refs; } + void decReference() + { + if(!--m_refs) + delete this; + } + private: + ACE_Atomic_Op<ACE_Thread_Mutex, int> m_refs; }; enum Priority |