一个关于线程的非常细微的问题,我有点糊涂了,进来看看吧:)

nbb01 2003-03-23 04:28:53
用API CreateThread()创建线程,返回线程的HANDLE,那么,在线程正常结束后,是否应该调用CloseHandle()关闭这个句柄?因为我的程序,要频繁地创建、结束大量的线程,担心这里有泄露。
...全文
11 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
nbb01 2003-03-23
谢谢winay_dd(winay)指点,正在考虑用线程池:)
回复
winay_dd 2003-03-23
我觉得有必要关闭。closehandle()和handl所指的内核对象直接关联的。调用一次closehandle,系统会对内核对象上的引用计数器减一,如果该内核对象引用为0了,则系统才会把内核对象销毁。所以,除非你整个进程结束了,否则不用closehandle好的话,内核对象还是存在的。

对于你要频繁启动线程的情况,可以考虑设计一个线程池。从里面取线程。频繁的启动线程确实对性能有影响,也会导致不稳定。
回复
alphapaopao 2003-03-23
又学了一招
回复
nbb01 2003-03-23
星级大将,功力果然非同寻常,
everandforever(Forever)、webber84(***闭关修炼中***),佩服佩服,对系统理解的很深。

先结贴了,不欠隔夜之帐,呵呵:)
回复
nbb01 2003-03-23
呵呵,谢谢各位,我也觉得应该CloseHandle,就是看到许多例子,都是只CreateThread,
却从不做CloseHandle,因此担心这样做,反而有问题:)

everandforever(Forever):请问你贴的那段,出处在哪里?在MSDN的哪个章节?我仔细
看看。准备结贴了:)

回复
webber84 2003-03-23
操作系统用一个线程内核对象来管理线程,一个句柄就标识了一个内核对象,你只有通过这个句柄才能访问线程。内核对象有一个引用计数,表明当前有多少句柄关联到这个内核对象,当该计数为0时,系统就会销毁这个对象。CloseHandle的作用就是关闭一个句柄,使用线程内核对象的引用计数减一。注意只是引用计数减一,不会关闭你创建的线程。所以,如果你创建了一个线程并且不会再去访问它,就可以立即调用CloseHandle,这不会对线程运行有任何影响;当线程运行完毕以后,你应该调用CloseHandle(如果以前没有调用过的话),否则线程内核对象的引用计数仍大于0,系统仍然会保留它(即使你已经不会再去访问它了),这显示会造成一些内存的浪费。
回复
everandforever 2003-03-23
需要.

The thread object remains in the system until the thread has terminated and all handles to it have been closed through a call to CloseHandle.
回复
richard_hu 2003-03-23
HANDLE本身就是一个指针变量,就象整形int的变量一样
一个变量总可以继续使用
但由于这是个指针,并且里面涉及到了资源的分配问题
所以建议还是要用closehandle把他关掉,把资源释放掉,保险!
回复
SeekTruth 2003-03-23



要看句柄是否要在以后使用吧。
回复
alphapaopao 2003-03-23
不需要close handle操作。放心。

============================================================================
您想非常省事的写 C++ 程序文档吗?
DocWizard 略作小改动,版本号 1.0.0.2 欢迎使用

欢迎下载,提出改进建议 http://www.betajin.com/alphasun/index.htm

您在写文档时是否被数量众多的类成员函数所烦恼?是否为了美观的
版面、格式而困扰?是否为了做成CHM而不得不进行大量的手工操作?
本软件可以帮助您

● 生成C++的类的HTML格式的文档,条分缕析,版面美观而朴实。
并且可以集成到 HTML Workshop 中,和其他类一起形成CHM。

● 而且可以生成 content of topic (.hhc) 文件以及生成
index (.hhk) 文件。避免您手工编辑生成文件的麻烦。要知
道在 HTML Workshop 中编辑生成这两种文件是非常麻烦的。

● 在马上就要推出的新版本中,将提供二次开发接口,您将可以
操纵文档生成过程,形成更符合您要求的文档。当然源代码的
解析本软件已经帮您完成了,您所要做的仅仅是生成您所关心
的“部分”文档。

欢迎下载,提出改进建议 http://www.betajin.com/alphasun/index.htm
回复
发帖
进程/线程/DLL
创建于2007-09-28

1.5w+

社区成员

VC/MFC 进程/线程/DLL
申请成为版主
帖子事件
创建了帖子
2003-03-23 04:28
社区公告
暂无公告