X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fthread.h;h=c84fb668a7c494ca47fa965e46ceb587866a0162;hb=9b38e20254913629a0db40e8eb8e1c42e1728e41;hp=1fff3627b037287aac89cb8e68e77f15d5543b47;hpb=609c9a508cfdc7b42c46c4f21d17639204165a00;p=libs%2Fcore.git diff --git a/source/core/thread.h b/source/core/thread.h index 1fff362..c84fb66 100644 --- a/source/core/thread.h +++ b/source/core/thread.h @@ -1,6 +1,9 @@ #ifndef MSP_CORE_THREAD_H_ #define MSP_CORE_THREAD_H_ +#include +#include "noncopyable.h" + namespace Msp { /** @@ -10,7 +13,7 @@ automatically started upon creation - you must manually call launch() instead. This is to allow initializing variables of the derived class before the thread is started. */ -class Thread +class Thread: private NonCopyable { private: struct Private; @@ -24,17 +27,17 @@ private: JOINED }; - Private *priv_; - State state_; + Private *priv_ = 0; + std::string name_; + State state_ = PENDING; protected: - Thread(); -private: - Thread(const Thread &); - Thread &operator=(const Thread &); + Thread(const std::string & = std::string()); public: virtual ~Thread(); + const std::string &get_name() const { return name_; } + /** Indicates whether the thread has finished running. */ bool is_finished() { return state_>=FINISHED; } @@ -54,6 +57,7 @@ private: void platform_join(); void platform_kill(); void platform_launch(); + void platform_setname(); protected: virtual void main() = 0;