一個簡單線程池的實現
以前寫線程池是在網絡編程的時候,一個線程池處理一個網絡套接字,隨著連接的增多,效率很低,最近主要是在封裝一個ipc程序(進程間通信機制) 主要
涉及的技術:
Winsock, 線程池
因為光是基于線程池的技術效率還是很低,打算重新把其代碼整理重新封裝通過,在此基礎上通過完成端口來封裝一個簡單的高并發(fā)服務器。
可能涉及的技術
Winsock: windows網絡通信
完成端口: Windows上服務器的大規(guī)模連接機制。
線程池: 高效高利用率的線程機制。
本文主要實現一個線程池的例子,從基本原理入手,一個線程池會記錄每個線程的信息,以及每個線程的處理。
一般一個簡單線程池至少包含下列組成部分。
1.線程池管理器(ThreadPoolManager):用于創(chuàng)建并管理線程池
2.工作線程(WorkThread): 線程池中線程
3.任務接口(Task):每個任務必須實現的接口,以供工作線程調度任務的執(zhí)行。
4.任務隊列:用于存放沒有處理的任務。提供一種緩沖機制。

2

3

4

5


6

7



8


9

10



11

12



13

14

15

16

17

18

19



20

21


22

23

24

25

26

27

28

29

30

31



32

33


34

35



36

37

38

39

40

41

42

43

44

45



46

47

48

49

50

51



52

53

54

55

56



57

58

59

60

61

62



63


64

65

66

67

68

69

70

71

72



73

74

75

76


77

78



79

80

81

82

83



84

85

86

87

88

89

90

91


92

93



94

95

96


97

98

99

100

101



102


103



104

105

106

107

108

109

110

111

112

113

114

115


116

117



118

119

120

121

122

123


124

125

126

127

128



129


130



131

132

133

134

135

136

137

138


139

140



141

142

143

144

145


146

147



148

149



150

151

152


153

154

155



156

157

158

159

160

161

162



163

164

165

166

167

168

169

170

171

172

173



174

175

176

177

178

179

180

181



182

183

184



185

186

187

188

189

190

191

192

193

194

195

196

197

198

199


200

201



202

203

204

205

206

207


208

209


210

211


212

213


214

215


216

217


218

219

220

221

222

223

備注:在設計ipc的時候參考 http://man.chinaunix.net/tech/lyceum/linuxK/ipc/ipc.html
線程池設計 http://www.ibm.com/developerworks/cn/java/l-threadPool/