c1db10a514799d1433eec2773bd470d8cf2157bd
[fms.git] / include / pthreadwrapper / thread.h
1 #ifndef _pthread_thread_\r
2 #define _pthread_thread_\r
3 \r
4 #include "noncopyable.h"\r
5 #include "runnable.h"\r
6 #include <pthread.h>\r
7 \r
8 namespace PThread\r
9 {\r
10 \r
11 class Runnable;\r
12 \r
13 class Thread:public NonCopyable\r
14 {\r
15 public:\r
16         Thread();\r
17         Thread(Runnable *runnable);\r
18         ~Thread();\r
19 \r
20         void Join();\r
21         void Cancel();\r
22 \r
23         void Sleep(const long ms);\r
24         const bool IsCancelled()        { return m_cancelled; }\r
25         const bool IsRunning()          { return m_running; }\r
26 \r
27 private:\r
28         void Start();\r
29         static void *EntryPoint(void *pthis);\r
30 \r
31         pthread_t m_thread;\r
32         int m_threadnum;\r
33         bool m_running;                         // thread (object) is currently running\r
34         bool m_cancelled;\r
35         Runnable *m_runnable;           // actual object that is being run\r
36 \r
37 };\r
38 \r
39 }       // namespace\r
40 \r
41 #endif  // _pthread_thread_\r