Jiwu Bu
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
32 随笔 :: 0 文章 :: 25 评论 :: 0 Trackbacks
<
2025年2月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
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
1
2
3
4
5
6
7
8
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(4)
给我留言
查看公开留言
查看私人留言
随笔分类
Boost(2)
(rss)
C++(6)
(rss)
Linux(17)
(rss)
Linux内核VFS(1)
(rss)
Note(1)
(rss)
Windows(1)
(rss)
算法与数据结构(5)
(rss)
随笔档案
2010年7月 (1)
2010年4月 (1)
2010年1月 (1)
2009年12月 (1)
2009年11月 (10)
2009年9月 (2)
2009年8月 (2)
2009年7月 (1)
2009年1月 (9)
2008年12月 (1)
2008年10月 (3)
相册
Me
搜索
最新评论
1. re: Linux下文件打包与解包[未登录]
好
--小米
2. re: Windows Socket编程
@Ruby
项目-属性-配置属性-清单工具-输入输出-嵌入清单 选择否
--langl
3. re: Gvim操作汇总
请问vim有反向选择功能么?
--我爱自由
4. re: Linux与Windows中map类erase方法的差异[未登录]
牛
--wz
5. re: 从STL中的list删除元素
学习了
--CDD
阅读排行榜
1. Windows Socket编程(50276)
2. 从STL中的list删除元素(22099)
3. Linux添加环境变量与GCC编译器添加INCLUDE与LIB环境变量(18506)
4. 堆排序算法总结!(10374)
5. 几种内部排序算法总结!(冒泡排序、快速排序、直接插入排序、拆半插入排序、简单选择排序)(6867)
评论排行榜
1. Windows Socket编程(9)
2. Linux与Windows中map类erase方法的差异(4)
3. 通过更改函数地址为函数打补丁(3)
4. Linux添加环境变量与GCC编译器添加INCLUDE与LIB环境变量(2)
5. 从STL中的list删除元素(2)
简单线程基类
参考文章:
http://blog.csdn.net/wei801004/archive/2006/05/18/744341.aspx
http://blog.csdn.net/SeaWave/archive/2006/05/20/746399.aspx
1
#include
<
iostream
>
2
#include
<
Windows.h
>
3
#include
<
process.h
>
4
#include
<
conio.h
>
5
6
using
namespace
std;
7
8
class
CThread
9
{
10
public
:
11
CThread(
void
)
12
{
13
m_running
=
true
;
14
}
15
16
virtual
~
CThread(
void
)
17
{
18
}
19
20
void
StartThread(
void
);
21
void
StopThread(
void
);
22
23
void
WaitForEnd(DWORD dwTimeOut
=
INFINITE);
24
25
virtual
DWORD WINAPI ThreadWorkItem(LPVOID lpParameter)
=
0
;
26
27
private
:
28
static
DWORD WINAPI ThreadFun(LPVOID lpParameter);
29
30
protected
:
31
bool
m_running;
32
33
private
:
34
HANDLE m_hThread;
35
};
36
37
inline
void
CThread::StartThread(
void
)
38
{
39
m_hThread
=
CreateThread(NULL,
0
, ThreadFun,
this
,
0
,
0
);
40
41
if
(m_hThread
==
NULL)
42
{
43
throw
exception(
"
Error: Start thread!
"
);
44
}
45
46
CloseHandle(m_hThread);
47
48
return
;
49
}
50
51
inline
void
CThread::WaitForEnd(DWORD dwTimeOut
/*
= INFINITE
*/
)
52
{
53
DWORD dwRet
=
WaitForSingleObject(m_hThread, dwTimeOut);
54
55
if
(dwRet
==
WAIT_OBJECT_0)
56
{
57
CloseHandle(m_hThread);
58
m_hThread
=
NULL;
59
}
60
else
if
(dwRet
==
WAIT_TIMEOUT)
61
{
62
throw
exception(
"
Error: Time out!
"
);
63
}
64
65
return
;
66
}
67
68
inline
void
CThread::StopThread()
69
{
70
m_running
=
false
;
71
}
72
73
inline DWORD WINAPI CThread::ThreadFun(LPVOID lpParameter)
74
{
75
CThread
*
pThread
=
reinterpret_cast
<
CThread
*>
(lpParameter);
76
pThread
->
ThreadWorkItem(lpParameter);
77
78
return
0
;
79
}
80
81
class
SubThread :
public
CThread
82
{
83
public
:
84
SubThread(
int
Num)
85
{
86
Start
=
Num;
87
}
88
89
DWORD WINAPI ThreadWorkItem(LPVOID lpParameter)
90
{
91
while
( m_running )
92
{
93
cout
<<
"
线程执行的操作[
"
<<
Start
++
<<
"
]
"
<<
endl;
94
Sleep(
1000
);
95
}
96
97
ExitThread(
0
);
98
99
return
0
;
100
}
101
102
private
:
103
int
Start;
104
};
105
106
int
main(
int
argc,
char
*
argv[])
107
{
108
SubThread MyThead(
1
);
109
110
cout
<<
"
To exit this server, hit a key at any time on this console
"
<<
endl;
111
112
MyThead.StartThread();
113
//
MyThead.WaitForEnd();
114
115
while
(
!
_kbhit())
116
{
117
Sleep(
0
);
118
}
119
120
MyThead.StopThread();
121
122
return
0
;
123
}
124
http://www.cppblog.com/Files/bujiwu/CThread.rar
posted on 2009-09-15 21:37
bujiwu
阅读(389)
评论(0)
编辑
收藏
引用
所属分类:
Windows
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
Powered by:
C++博客
Copyright © bujiwu