1 #ifndef MSP_CORE_THREAD_H_
2 #define MSP_CORE_THREAD_H_
5 #include "noncopyable.h"
10 Base class for threads. To create a thread for some task, derive it from this
11 class and implement the main() function. Note that threads are not
12 automatically started upon creation - you must manually call launch() instead.
13 This is to allow initializing variables of the derived class before the thread
16 class Thread: private NonCopyable
35 Thread(const std::string & = std::string());
39 const std::string &get_name() const { return name_; }
41 /** Indicates whether the thread has finished running. */
42 bool is_finished() { return state_>=FINISHED; }
44 /** Waits for the thread to exit. Calling this from the thread will cause a
48 /** Violently terminates the thread. This should only be used as a last
49 resort, as the thread gets no chance to clean up. */
53 /** Starts the thread. Can only be called once for each Thread instance. */
59 void platform_launch();
60 void platform_setname();
63 virtual void main() = 0;