X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fcore%2Fthread.h;h=ae257078569c47844e0d4502886f5de403371885;hp=92923f31bbd5718eb8816aed1e28d9e8e72dadda;hb=79482ba7aea1b79c7a310c940cc0292532ef3bcb;hpb=b56eb5ec1da675da0c66abc53c1e4f6c4e4cccbd diff --git a/source/core/thread.h b/source/core/thread.h index 92923f3..ae25707 100644 --- a/source/core/thread.h +++ b/source/core/thread.h @@ -1,15 +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 { /** @@ -22,33 +13,29 @@ is started. 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(t))->main(); return 0; } - - Thread(const Thread &); - Thread &operator=(const Thread &); }; } // namespace Msp