怎样终止一个线程

catameng 2003-03-21 10:02:08
当用Thread Object
再用Thread *newthread = new Thread(false)创建的新线程怎样终止
...全文
17 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pp616 2003-03-22
  • 打赏
  • 举报
回复
呵呵,季老大说了。
binbin 2003-03-21
  • 打赏
  • 举报
回复
不要太野蛮喔.
jishiping 2003-03-21
  • 打赏
  • 举报
回复
如果线程的执行函数Execute()是循环,就很好办了,只要在循环里判断Terminated就可以
了。如果不是循环,可以在整个函数里多加一些判断语句,看看Terminated是否为true,如
果是的话,就return;结束函数Execute()的执行就可以了。采用判断Terminated是否为true
的方法,当需要结束线程时,只要执行newthread->Terminate();就可以了,这样线程的属性
Terminated就是true了。比如:
void __fastcall MyThread::Execute()
{
while(!Terminated) {
// 你的程序代码
}
}
在主线程里,调用newthread->Terminate(); 线程的Terminated就变成true了。

如果线程的Execute()不是循环,又不方便到处检查Terminated是否为true的话,唯一的办法,就是强制结束线程。方法是,直接调用TerminateThread(newthread->Handle, 0);就可
以了。但是这个方法有缺陷。比如在线程的Execute()的开始分配了内存,在线程结束时释放
内存,但是线程被强制中止的话,那些分配的内存就无法回收了。这儿只是一个例子,其实
还有更严重的后果,我就不和你一一说明了。

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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