如何结束线程

OhFish 2008-10-07 12:32:02
如何从线程外部安全结束线程
...全文
62 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
asd107 2008-10-07
  • 打赏
  • 举报
回复
一般把线程结束条件作为线程里的循环条件,在外部需要线程退出时,标记该条件结束线程。
在外部等到线程退出的handle,closehandle,清空handle。
if (ThreadHandle)
{
ThreadExitFlag = TRUE; //Set thread exit flag.
WaitForSingleObject(ThreadHandle,INFINITE); //Wait for the thread exit.
CloseHandle(ThreadHandle);
ThreadHandle=NULL;
}
阿呆_ 2008-10-07
  • 打赏
  • 举报
回复
一般都用循环条件来决定是否结束线程的(大部分线程都有个循环),如果你的线程从头到底只执行一次而且很耗时,那么最安全的做法就是“到处插入检测条件”。
OhFish 2008-10-07
  • 打赏
  • 举报
回复
楼上的,要在线程里插入很多条件检测语句,那不是很麻烦,又不美观
jbhas 2008-10-07
  • 打赏
  • 举报
回复
同意楼上的
阿呆_ 2008-10-07
  • 打赏
  • 举报
回复
要安全,只有线程内部主动结束。线程需要在内部提供一个结束的接口给外部(比如一个变量)。内部判断这个接口,如果不满足条件则结束线程。 其它途径都不能保证安全(可能造成泄漏)

15,471

社区成员

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

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