-/* $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 {
/**
class Thread
{
private:
- ThreadHandle thread_;
- bool launched_;
+ struct Private;
+
+ Private *priv_;
+ bool launched_;
protected:
- Thread(): launched_(false) { }
+ Thread();
+private:
+ Thread(const Thread &);
+ Thread &operator=(const Thread &);
public:
virtual ~Thread();
+ /** Waits for the thread to exit. Calling this from the thread will cause a
+ deadlock. */
void join();
- void cancel();
+
+ /** 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;
- void check_cancel();
-
-private:
- static
-#ifdef WIN32
- DWORD WINAPI
-#else
- void *
-#endif
- main_(void *t) { (reinterpret_cast<Thread *>(t))->main(); return 0; }
-
- Thread(const Thread &);
- Thread &operator=(const Thread &);
};
} // namespace Msp