CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

如何有效的强制结束运行的线程,释放资源?

楼主idoudoum(求知是快乐的)2002-04-11 09:06:13 在 VC/MFC / 进程/线程/DLL 提问

我有一个线程,内部执行一个循环。我不能在循环内部使用变量和事件退出循环,从而退出线程,能不能强制退出线程,并释放资源! 问题点数:50、回复次数:1Top

1 楼acptvc(微软全球技术中心 VC技术支持)回复于 2002-04-11 11:37:14 得分 50

为了强制终止一个线程,您可以使用TerminateThread()函数,它的原型如下:  
  BOOL   TerminateThread(  
      HANDLE   hThread,         //   handle   to   thread  
      DWORD   dwExitCode       //   exit   code  
  );  
   
  第一个参数是调用CreateThread的返回值,第二个参数是指定线程的退出码,该值可以用GetExitCodeThread函数来查看。  
   
  该函数导致指定线程终止,一旦调用目标线程不能再执行任何user-mode的代码,线程的初始栈也得不到释放,依附于该线程的DLL也得不到该线程已经终止的通知。  
   
  因为此函数的强制性,所以会导致一些情况发生:  
  如果目标线程占有crital   section,将不被释放;  
  如果线程正从堆中申请内存,堆的锁将不被释放;  
  此外,如果正在执行kernel32的调用或者使用shared   DLL,也会产生影响。  
   
  所以,如果您强制退出,除了考虑主动地释放资源之外,编码时还要还要考虑会出现上述的一些问题。  
   
  如果您需要进一步的信息,请参看:  
  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/prothred_7h2c.asp  
   
  -   微软全球技术中心   VC技术支持  
   
  本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款  
  (http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。  
   
  为了为您创建更好的讨论环境,请参加我们的用户满意度调查  
  (http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。Top

相关问题

  • 线程的资源释放
  • 线程资源释放有关问题!!!
  • 线程资源释放的怪问题
  • 多线程资源释放的问题
  • 线程中资源释放的菜鸟问题
  • 多线程中如何中断并释放资源.
  • 用AfxBeginThread开启的线程怎样结束后释放资源?
  • AfxBeginThread()启动线程后是否要用CloseHandle()释放资源??
  • 请问我如何在线程里释放CPU资源?
  • 线程运行期间,程序退出,怎样释放线程中动态分配的内存?

关键词

  • 线程
  • 函数
  • 循环
  • 执行
  • microsoft
  • asp
  • 释放
  • 调用
  • 退出
  • 资源

得分解答快速导航

  • 帖主:idoudoum
  • acptvc

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo