]> git.tdb.fi Git - libs/core.git/blobdiff - source/core/thread.h
Use nullptr instead of 0 for pointers
[libs/core.git] / source / core / thread.h
index 1fff3627b037287aac89cb8e68e77f15d5543b47..ef071cd43ffb070f8c2ea2646a514ac2f514f9a6 100644 (file)
@@ -1,6 +1,9 @@
 #ifndef MSP_CORE_THREAD_H_
 #define MSP_CORE_THREAD_H_
 
+#include <string>
+#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,19 +27,19 @@ private:
                JOINED
        };
 
-       Private *priv_;
-       State state_;
+       Private *_priv = nullptr;
+       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; }
+       bool is_finished() { return _state>=FINISHED; }
 
        /** Waits for the thread to exit.  Calling this from the thread will cause a
        deadlock. */
@@ -54,6 +57,7 @@ private:
        void platform_join();
        void platform_kill();
        void platform_launch();
+       void platform_setname();
 
 protected:
        virtual void main() = 0;