关闭线程句柄,线程结束了吗

donself 2008-11-11 01:58:19
关闭线程句柄,线程结束了吗?

如果在主线程中把子线程中的句柄关闭了,这时如果子线程要退出,并且要释放资源该如果弄呢?
...全文
577 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
  • 打赏
  • 举报
回复
线程没有结束,线程在线程函数执行完返回以后才结束。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧