#define MSP_CORE_THREAD_H_
#include <string>
+#include "mspcore_api.h"
+#include "noncopyable.h"
namespace Msp {
This is to allow initializing variables of the derived class before the thread
is started.
*/
-class Thread
+class MSPCORE_API Thread: private NonCopyable
{
private:
struct Private;
JOINED
};
- Private *priv_;
- std::string name_;
- State state_;
+ Private *_priv = nullptr;
+ std::string _name;
+ State _state = PENDING;
protected:
Thread(const std::string & = std::string());
-private:
- Thread(const Thread &);
- Thread &operator=(const Thread &);
public:
virtual ~Thread();
- const std::string &get_name() const { return name_; }
+ 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. */