Thread.h
上传用户:maryhy001
上传日期:2007-05-02
资源大小:2317k
文件大小:2k
源码类别:

网格计算

开发平台:

Visual C++

  1. //File Name : Thread.h.
  2. //Standard windows thread common header file that writen by Devia.
  3. //This code is free all, you can distribute it.
  4. //Author : Devia Li(devia@sina.com)
  5. //DateTime : 2004-04-04
  6. #ifndef _THREAD_H
  7. #define _THREAD_H
  8. #include "mutex.h"
  9. //thread state enum type.
  10. typedef enum {TS_STOPED = 0, TS_RUNNING = 1, TS_SUSPEDED = 2} THREAD_STATE;
  11. //////////////////////////////////////////////////////////////////////////
  12. class NETLIBDLLEXPORT CThread
  13. {
  14. public:
  15. //constructor and destructor
  16. CThread();
  17. virtual ~CThread();
  18. //when destructor, terminate the thread flag
  19. bool m_bFreeAndTerminate;
  20. //create the thread
  21. bool Create(bool bCreateAndSuspended = false, LPVOID lpParam = NULL);
  22. //destroy the thread
  23. virtual void Destroy();
  24. //Start
  25. void Start();
  26. //Stop
  27. void Stop();
  28. //Pause
  29. void Pause();
  30. //Resume
  31. void Resume();
  32. //get thread id
  33. DWORD getThreadId() const {
  34. return m_dwThreadId;
  35. };
  36. //get thread handle
  37. HANDLE getSafeHandle() const {
  38. return m_hThread;
  39. }
  40. //get the thread state.
  41. THREAD_STATE getThreadState() const {
  42. return this->m_tsState;
  43. }
  44. //get the thread terminate flag.
  45. bool CanBeTerminate() const {
  46. return this->m_bCanTerminate;
  47. }
  48. //get the thread param value.
  49. LPVOID getThreadParams() const{
  50. return this->m_lpParams;
  51. }
  52. protected:
  53. //create the thread
  54. static ulong WINAPI fnThreadProc(LPVOID lpParameter);
  55. //overrides execute function.
  56. virtual void Execute() = 0;
  57. //start, stop, pause and resume event process functions.
  58. virtual void OnStart(){ /* empty */ }
  59. virtual void OnStop(){ /* empty */ }
  60. virtual void OnSuspend(){ /* empty */ }
  61. virtual void OnResume(){ /* empty */ }
  62. private:
  63. typedef enum { TE_START = 0, TE_STOP = 1, TE_SUSPEND = 2, TE_RESUME = 3 } THREAD_EVENT;
  64. void DoEvent(CThread::THREAD_EVENT te);
  65. protected:
  66. THREAD_STATE m_tsState; //thread state variable.
  67. bool m_bCanTerminate; //terminate thread flag.
  68. CMutex m_csCritSect; //cirtical section object.
  69. private:
  70. LPVOID m_lpParams; //user's parameter
  71. HANDLE m_hThread; //thread handle
  72. ulong m_dwThreadId; //thread id
  73. };
  74. #endif //_THREAD_H