线程运行结束后,必须closehandle吗?
我有一个程序,主线程接收到用户操作后,就会_beginThreadEx一个线程来执行用户的请求,线称运行一段时间后,自己会有出口条件,能自己退出。请问:我需要在线称退出后调用closeHandle吗?不调用的话会导致内存泄漏吗?问题点数:100、回复次数:12Top
frameborder="0" scrolling="no" src="http://topic.csdn.net/Include/Board.htm?Tags=" style="width: 100%; height: 100%; overflow-x: hidden; overflow-y: hidden; ">
1 楼jiangsheng(蒋晟.Net[MVP])回复于 2006-03-22 00:46:45 得分 0
1 是
2 不会,但是有句柄泄漏
Top
2 楼mythay(小黑)回复于 2006-03-22 11:27:05 得分 0
是不是关闭线程句柄?如果是,那么
1.他不会引起内存泄漏,不过会占用一些系统资源
2.如果你不再使用(比如得到退出代码,等待退出之类),还是关了好,毕竟是良好的编程习惯。Top
3 楼yu4233(于)回复于 2006-03-22 11:27:07 得分 0
我如果创建线程后不需要再对线程进行其他的处理,比如:resumeThread,suspendThread等,我可以在线程刚刚创建完成后就closeHandle线程句柄吗????这样是不是就不会句柄泄漏了??? 这样会影响线程的正常运行吗?????Top
4 楼mythay(小黑)回复于 2006-03-22 11:27:53 得分 0
可以,当然不影响线程运行。Top
5 楼lzzqqq(Jonersen)回复于 2006-03-22 11:35:53 得分 0
应该养成关闭Handle的习惯,当然不关闭也不会泄漏内存,但不是C++所提倡的.
如果不关闭,那就成了Java了,
Top
6 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2006-03-22 12:51:52 得分 0
Just handle leak,not memory leak.Top
7 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2006-03-22 14:33:34 得分 0
会造成句柄泄漏,浪费资源Top
8 楼ydfivy(我就是一送外卖的)回复于 2006-03-22 14:44:59 得分 0
CloseHandle是为线程内核计数器减1.
如果不这样做的话,会造成内核资源的泄漏Top
9 楼striking(庸人自扰)回复于 2006-03-22 16:59:06 得分 0
我也来说一下吧
线程创建后, 运行结束没有CloseHandle将带来几个负面效应
1. 虽然你不CloseHandle来显示关闭一个线程对象, 操作系统在进程结束也会帮你完成, 但是如果你的进程经常创建线程, 这样会产生资源的泄漏. 对效率有一个影响.
2. 如果线程内产生了一个文件对象, 文件对象被进程拥有, 非线程拥有, 进程结束之前没有办法清理
3. and so on...Top
10 楼xqk(夏乾坤)回复于 2006-03-22 19:29:50 得分 50
不会造成泄漏,但一定要关闭句柄,否则浪费系统资源Top
11 楼xiaoxiangfei(蜗牛)回复于 2006-03-23 09:52:16 得分 50
你就用_beginthread 及到时在线程中_endthread。就不要用CloseHandle了。
CreateThread,如果是那返回的句柄与你的线程结不结束没关系,你可以在线程结束之前调用CloseHandle(hThread)函数(因为你不想保存该线程的句柄),这对你的县城执行不会造成什么影响