]> git.tdb.fi Git - libs/core.git/blobdiff - source/core/thread.h
Check that the option actually has a short name
[libs/core.git] / source / core / thread.h
index ef095c6a0ce0ab8bf1a591e8714f2d469c4603f0..ae257078569c47844e0d4502886f5de403371885 100644 (file)
@@ -1,14 +1,6 @@
-/* $Id$
-
-This file is part of libmspcore
-Copyright © 2006 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
 #ifndef MSP_CORE_THREAD_H_
 #define MSP_CORE_THREAD_H_
 
-#include "types.h"
-
 namespace Msp {
 
 /**
@@ -20,30 +12,30 @@ is started.
 */
 class Thread
 {
-public:
-       void join();
-       void cancel();
-       void kill();
-       virtual ~Thread();
-protected:
-       Thread(): launched_(false) { }
-       void launch();
-       virtual void main()=0;
-       void check_cancel();
 private:
-       ThreadHandle thread_;
-       bool         launched_;
+       struct Private;
+
+       Private *priv_;
+       bool launched_;
 
+protected:
+       Thread();
+private:
        Thread(const Thread &);
        Thread &operator=(const Thread &);
+public:
+       virtual ~Thread();
 
-       static
-#ifdef WIN32
-       DWORD WINAPI
-#else
-       void *
-#endif
-       main_(void *t) { (reinterpret_cast<Thread *>(t))->main(); return 0; }
+       /** Waits for the thread to exit.  Calling this from the thread will cause a
+       deadlock. */
+       void join();
+
+       /** Violently terminates the thread.  This should only be used as a last
+       resort, as the thread gets no chance to clean up. */
+       void kill();
+protected:
+       void launch();
+       virtual void main() = 0;
 };
 
 } // namespace Msp