X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fthreadengine.h;h=10f3fed13b5fa6684397f105deace4386244e65e;hb=a97624bd4b0ea052ca1380f9164769d6a6cab2a3;hp=e1400eb9521acbd6989329cbcf96601207913e1f;hpb=e7150d29f4897d595c9ee2218e190d6cf42f191b;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/threadengine.h b/include/threadengine.h index e1400eb95..10f3fed13 100644 --- a/include/threadengine.h +++ b/include/threadengine.h @@ -20,11 +20,17 @@ #include "inspircd_config.h" #include "base.h" +#ifdef WINDOWS +#include "threadengines/threadengine_win32.h" +#endif + +class ThreadData; + /** Derive from this class to implement your own threaded sections of * code. Be sure to keep your code thread-safe and not prone to deadlocks * and race conditions if you MUST use threading! */ -class CoreExport Thread : public Extensible +class CoreExport Thread { private: /** Set to true when the thread is to exit @@ -49,17 +55,8 @@ class CoreExport Thread : public Extensible { } - /** If this thread has a Creator set, call it to - * free the thread - */ - virtual ~Thread() - { - if (state) - { - state->FreeThread(this); - delete state; - } - } + /* If the thread is running, you MUST join BEFORE deletion */ + virtual ~Thread(); /** Override this method to put your actual * threaded code here. @@ -68,10 +65,11 @@ class CoreExport Thread : public Extensible /** Signal the thread to exit gracefully. */ - virtual void SetExitFlag() - { - ExitFlag = true; - } + virtual void SetExitFlag(); + + /** Join the thread (calls SetExitFlag and waits for exit) + */ + void join(); };