version 0.1.10
[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 void Sleep(const long ms);\r
12 \r
13 class Runnable;\r
14 \r
15 class Thread:public NonCopyable\r
16 {\r
17 public:\r
18         Thread();\r
19         Thread(Runnable *runnable);\r
20         ~Thread();\r
21 \r
22         void Join();\r
23         void Cancel();\r
24 \r
25         void Sleep(const long ms);\r
26         const bool IsCancelled()        { return m_cancelled; }\r
27         const bool IsRunning()          { return m_running; }\r
28 \r
29 private:\r
30         void Start();\r
31         static void *EntryPoint(void *pthis);\r
32 \r
33         pthread_t m_thread;\r
34         int m_threadnum;\r
35         bool m_running;                         // thread (object) is currently running\r
36         bool m_cancelled;\r
37         Runnable *m_runnable;           // actual object that is being run\r
38 \r
39 };\r
40 \r
41 }       // namespace\r
42 \r
43 #endif  // _pthread_thread_\r