X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fthread.h;h=ae257078569c47844e0d4502886f5de403371885;hb=8db2c378e1d006afb792d829857e866541bf81a5;hp=60a2e83e7154096524c2583e7eccfe57f8cc5c30;hpb=521cf1db00f8ce2d9f9494dca503d6c17d89ac2f;p=libs%2Fcore.git diff --git a/source/core/thread.h b/source/core/thread.h index 60a2e83..ae25707 100644 --- a/source/core/thread.h +++ b/source/core/thread.h @@ -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) { ((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