summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2008-02-10 14:50:38 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2008-02-10 14:50:38 +0000
commit11c08b9aed1792705e5d82b343fae6ce56910338 (patch)
tree31a3cb573ac3958dd9702dedce9d399da111e424 /include
parenteedce11c9606f24d339d8055fd9d0f995b4e0951 (diff)
Each Thread class must have its own thread handle, duh. Someone take away my craqpipe NOW.
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8876 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'include')
-rw-r--r--include/threadengine.h32
-rw-r--r--include/threadengines/threadengine_pthread.h6
2 files changed, 27 insertions, 11 deletions
diff --git a/include/threadengine.h b/include/threadengine.h
index 7d27b867a..0f729a962 100644
--- a/include/threadengine.h
+++ b/include/threadengine.h
@@ -21,14 +21,8 @@
#include "base.h"
class InspIRCd;
+class Thread;
-class CoreExport Thread : public Extensible
-{
- public:
- Thread() { };
- virtual ~Thread() { };
- virtual void Run() = 0;
-};
class CoreExport ThreadEngine : public Extensible
{
@@ -48,6 +42,30 @@ class CoreExport ThreadEngine : public Extensible
virtual void Run() = 0;
virtual void Create(Thread* thread_to_init) = 0;
+
+ virtual void FreeThread(Thread* thread) = 0;
};
+class CoreExport Thread : public Extensible
+{
+ public:
+
+ ThreadEngine* Creator;
+
+ Thread() : Creator(NULL)
+ {
+ }
+
+ virtual ~Thread()
+ {
+ if (Creator)
+ Creator->FreeThread(this);
+ }
+
+ virtual void Run() = 0;
+};
+
+
+
#endif
+
diff --git a/include/threadengines/threadengine_pthread.h b/include/threadengines/threadengine_pthread.h
index db32acbcc..2c821d93d 100644
--- a/include/threadengines/threadengine_pthread.h
+++ b/include/threadengines/threadengine_pthread.h
@@ -23,10 +23,6 @@ class InspIRCd;
class CoreExport PThreadEngine : public ThreadEngine
{
- private:
-
- pthread_t MyPThread;
-
public:
PThreadEngine(InspIRCd* Instance);
@@ -40,6 +36,8 @@ class CoreExport PThreadEngine : public ThreadEngine
static void* Entry(void* parameter);
void Create(Thread* thread_to_init);
+
+ void FreeThread(Thread* thread);
};
#endif