aboutsummaryrefslogtreecommitdiff
path: root/src/shared/Threading.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/Threading.h')
-rw-r--r--src/shared/Threading.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/shared/Threading.h b/src/shared/Threading.h
index eac3c0e8efb..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
@@ -61,7 +71,7 @@ namespace ACE_Based
{
public:
Thread();
- Thread(Runnable& instance);
+ explicit Thread(Runnable* instance);
~Thread();
bool start();