社区
进程/线程/DLL
帖子详情
关闭线程句柄,线程结束了吗
donself
2008-11-11 01:58:19
关闭线程句柄,线程结束了吗?
如果在主线程中把子线程中的句柄关闭了,这时如果子线程要退出,并且要释放资源该如果弄呢?
...全文
744
11
打赏
收藏
关闭线程句柄,线程结束了吗
关闭线程句柄,线程结束了吗? 如果在主线程中把子线程中的句柄关闭了,这时如果子线程要退出,并且要释放资源该如果弄呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
路人乙2019
2008-11-11
打赏
举报
回复
当然不会,只是减少引用。
奶糖人五号
2008-11-11
打赏
举报
回复
句柄就像一个指向 xx数据的指针
你把这个指针对象给销毁,但是对应的xx数据依然存在
cnzdgs
2008-11-11
打赏
举报
回复
关闭句柄与线程运行没有关系,线程就像一个文件,句柄可以随时打开和关闭,关闭文件句柄不会删除文件。
会思考的草
2008-11-11
打赏
举报
回复
不会结束,线程对象的引用计数减一。执行完毕后,若引用计数为0,则回收该线程对象。
WG_Wolf
2008-11-11
打赏
举报
回复
子线程结束后系统自动收回系统资源,所有编程都有一个原则:你申请的资源,你释放;
WG_Wolf
2008-11-11
打赏
举报
回复
没有结束!
结束线程有一下几种方式:
1.调用TerminateThread函数;
2.主线程退出(这个时侯整个应用程序退出,所有系统资源都被释放,远程线程除外RemoteThread);
weidong0210
2008-11-11
打赏
举报
回复
线程没有结束,线程在线程函数执行完返回以后才结束。
dadalan
2008-11-11
打赏
举报
回复
第一个问题:
句柄可以认为是系统对资源(如线程)的分配的一个编号。关闭这个编号,对于不同的资源,效果不尽相同。对于线程来说,关闭这个编号并不意味着终止线程,只是之后很难再操纵这个线程。
这就好比摘掉了门牌号,并不代表这个房子不存在了,只是以后往这送信就麻烦些了。
总的来说可以这么理解:线程句柄就像你家的地址,线程就像你的家房子
第二个问题:
ExitThread(0);
DWORD WINAPI ThreadProc( LPVOID lpParameter )
{
// scsModuleinfo t_Load;
MessageBox(NULL,TEXT(" load img Thread"),NULL,MB_OK);
// memcpy(&t_Load,&mModuleinfo[(int)lpParameter],sizeof(t_Load));
Sleep(100);
// LoadImage(t_Load.offset ,t_Load.type ,TEXT("\\Windows\\"),TotalReserveSize);
// t_Load.bload = TRUE;
SetEvent(g_ThreadEven[(int)lpParameter]);
// MessageBox(NULL,TEXT("Exit Load IMG Thread"),NULL,MB_OK);
ExitThread(0);
return 0;
}
wuchuncai
2008-11-11
打赏
举报
回复
关闭线程句柄,线程结束了吗?
没有。
如果在主线程中把子线程中的句柄关闭了,这时如果子线程要退出,并且要释放资源该如果弄呢?
在子线程中,设一个变量,主线程把这个变量置为TRUE,那么子线程自己退出,资源一般在那里申请就在那里释放。
lijinfenghust
2008-11-11
打赏
举报
回复
不会关闭子线程,子线程会继续执行,直到线程函数返回。
除非某种原因,进程退出了,这个时候子线程被迫退出。
由操作系统释放资源。
wzaen
2008-11-11
打赏
举报
回复
线程没有结束,线程在线程函数执行完返回以后才结束。
CloseHandel(_beginthreadex): 只是
关闭
了
线程
句柄
对象,并不会
结束
线程
。
本文探讨了在多
线程
环境下
线程
句柄
的作用及CloseHandle函数的正确使用方式,明确了CloseHandle仅用于释放
句柄
资源,并不会影响正在运行的
线程
。
易语言
句柄
数过高怎么解决
使用易语言时,因多
线程
导致
句柄
数增加,久了会崩溃。本文提出两步解决办法:一是解决
线程
句柄
的传递,通过引用DLL命令、启动
线程
时传递
句柄
、在
线程
内获取
句柄
来实现;二是利用队列按序
关闭
执行完毕的
线程
,将
线程
句柄
投递给
结束
任务并使用
关闭
句柄
命令。
多
线程
,
线程
创建及
关闭
句柄
存在的问题,终止
线程
的运行的几个函数
本文讨论了Windows环境下
线程
的生命周期,特别是创建
线程
后
关闭
句柄
的影响。
线程
句柄
的
关闭
并不会立即
结束
线程
,而是减少内核对象的使用计数。
线程
的正常
结束
应由其函数返回,但也可使用ExitThread或TerminateThread,后者可能导致资源未清理。在高强度测试中,TerminateThread可能导致死锁。建议避免使用TerminateThread,让
线程
自然
结束
或使用同步机制。
关闭
线程
句柄
CloseHandle()
本文探讨了Windows环境下
线程
管理和
句柄
关闭
的重要性。创建
线程
后,通常需要通过CloseHandle()函数
关闭
线程
句柄
以避免
句柄
泄漏。
线程
内核对象在
句柄
关闭
且
线程
执行完毕后才会被销毁。文章列举了不同
结束
线程
的方法及其影响,并通过测试代码验证了
句柄
管理的必要性。
判断
线程
是否
结束
的方法
本文介绍了三种检测
线程
是否
结束
的方法:使用GetExitCodeThread获取退出代码;利用WaitForSingleObject等待
线程
结束
;自行控制
线程
状态。同时讨论了
线程
句柄
的作用及
关闭
句柄
的影响。
进程/线程/DLL
15,465
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章