OSDN Git Service

1740bd7d2148d7fff2be664588699fbafec59c89
[internetcity/prototype.git] / common / CThread.h
1 // \8b\9e
2
3 #ifndef INC_CThread
4 #define INC_CThread
5
6 #include <windows.h>
7 #include <process.h>
8 #include <list>
9
10 typedef CRITICAL_SECTION MyCriticalSection;
11 typedef std::list<MyCriticalSection*> CriticalSectionList;
12 typedef CriticalSectionList::iterator CriticalSectionID;
13
14 ////////////////////////////////////////////////////////////////////////////////
15 // CThread
16 // Windows\97p\83X\83\8c\83b\83h\83N\83\89\83X
17 ////////////////////////////////////////////////////////////////////////////////
18 class CThread
19 {
20         ////////////////////////////////////////////////////////////////////////////////
21         // \83\81\83\93\83o\95Ï\90\94
22         ////////////////////////////////////////////////////////////////////////////////
23 protected:
24         // Windows\97p\83X\83\8c\83b\83h\90§\8cä\97p
25         HANDLE m_hThread;
26         // \83X\83\8c\83b\83h\8aÖ\90\94\83\8b\81[\83v\8aÇ\97\9d\97p
27         bool m_doLoop;
28         // \83X\83\8c\83b\83h\91\8dÝ\8aÇ\97\9d\97p
29         bool m_isExist;
30
31 private:
32         // \83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\90§\8cä\97p
33         CriticalSectionList m_CriticalSectionList;
34
35         ////////////////////////////////////////////////////////////////////////////////
36         // \83R\83\93\83X\83g\83\89\83N\83^
37         ////////////////////////////////////////////////////////////////////////////////
38 public:
39         CThread();
40
41         ////////////////////////////////////////////////////////////////////////////////
42         // \83f\83X\83g\83\89\83N\83^
43         ////////////////////////////////////////////////////////////////////////////////
44 public:
45         virtual ~CThread();
46
47         ////////////////////////////////////////////////////////////////////////////////
48         // static\8aÖ\90\94\81A\83R\81[\83\8b\83o\83b\83N\8aÖ\90\94
49         ////////////////////////////////////////////////////////////////////////////////
50 protected:
51         static unsigned int __stdcall procThread(void* in_pParameter);
52
53         ////////////////////////////////////////////////////////////////////////////////
54         // \91\80\8dì\83\81\83\\83b\83h
55         ////////////////////////////////////////////////////////////////////////////////
56 public:
57         // \83X\83^\81[\83g(DoLoop: true - \8cJ\82è\95Ô\82·, false - \88ê\89ñ\82Ì\82Ý, Flag: \83X\83\8c\83b\83h\82Ì\90Ý\92è)
58         virtual bool start(bool in_doLoop = false, UINT in_Flag = 0);
59         // \83X\83g\83b\83v
60         virtual void stop();
61         // \88ê\8e\9e\92â\8e~
62         virtual UINT suspend();
63         // \83X\83\8c\83b\83h\8dÄ\83X\83^\81[\83g
64         virtual UINT resume();
65 protected:
66         // \83X\83\8c\83b\83h\83\8b\81[\83v
67         virtual void run();
68
69 public:
70         // \83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\90§\8cäID\82ð\8eæ\93¾\82·\82é
71         const CriticalSectionID createCriticalSectionID();
72         // \83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\90§\8cäID\82ð\8aJ\95ú\82·\82é
73         void deleteCriticalSectionID(const CriticalSectionID in_CriticalSectionID);
74         // \83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\82É\93ü\82é
75         void enterCriticalSectionID(const CriticalSectionID in_CriticalSectionID);
76         // \83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\82©\82ç\8fo\82é
77         void leaveCriticalSectionID(const CriticalSectionID in_CriticalSectionID);
78
79
80         ////////////////////////////////////////////////////////////////////////////////
81         // \91®\90«\83\81\83\\83b\83h
82         ////////////////////////////////////////////////////////////////////////////////
83 public:
84         // \83v\83\8d\83Z\83X\83v\83\89\83C\83I\83\8a\83e\83B\82Ì\90Ý\92è
85         virtual UINT setPriorityClass(DWORD in_PriorityClass);
86         // \97D\90æ\93x\82Ì\90Ý\92è
87         virtual UINT setPriority(int in_Priority);
88         // \97D\90æ\93x\82ð\8dÅ\92á\82É\82·\82é
89         virtual UINT setPriorityMinimum();
90         // \97D\90æ\93x\82ð\8dÅ\91å\82É\82·\82é
91         virtual UINT setPriorityMaxisim();
92
93         ////////////////////////////////////////////////////////////////////////////////
94         // \83C\83e\83\8c\81[\83V\83\87\83\93
95         ////////////////////////////////////////////////////////////////////////////////
96         ////////////////////////////////////////////////////////////////////////////////
97         // \8fó\91Ô
98         ////////////////////////////////////////////////////////////////////////////////
99 public:
100         // \83X\83\8c\83b\83h\82ª\91\8dÝ\82·\82é\82©\92²\82×\82é
101         virtual bool isExist();
102
103         ////////////////////////////////////////////////////////////////////////////////
104         // \89\89\8eZ\8eq
105         ////////////////////////////////////////////////////////////////////////////////
106         ////////////////////////////////////////////////////////////////////////////////
107         // \8f\83\90\88\89¼\91z\8aÖ\90\94\81A\92è\8b`\82Ì\82Ý\81i\94ñ\8eÀ\91\95\92ñ\8b\9f\81j
108         ////////////////////////////////////////////////////////////////////////////////
109         ////////////////////////////////////////////////////////////////////////////////
110         // \93à\95\94\83N\83\89\83X
111         ////////////////////////////////////////////////////////////////////////////////
112 };
113
114 #endif //INC_CThread