现在的位置: 首页 > 综合 > 正文

线程closehandle

2013年03月26日 ⁄ 综合 ⁄ 共 1491字 ⁄ 字号 评论关闭

线程运行结束后,必须closehandle吗?

楼主yu4233(于)2006-03-21 23:53:35 在 VC/MFC / 进程/线程/DLL 提问

我有一个程序,主线程接收到用户操作后,就会_beginThreadEx一个线程来执行用户的请求,线称运行一段时间后,自己会有出口条件,能自己退出。请问:我需要在线称退出后调用closeHandle吗?不调用的话会导致内存泄漏吗?问题点数:100、回复次数:12Top

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)函数(因为你不想保存该线程的句柄),这对你的县城执行不会造成什么影响

抱歉!评论已关闭.