如何终止一个线程?

joinjoy 2000-08-16 10:54:00
用AfxBeginThread启动的,如何在不需要的时候终止它的运行?
...全文
901 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Holly 2000-08-17
  • 打赏
  • 举报
回复
补充:不要混用WINDOWS API, CRT或MFC的线程函数!
如果你是使用WINDOWS API创建线程那么退出就采用WINDOWS API的线程退出函数;
如果用CRT的函数创建线程就要用CRT的函数退出线程;
MFC也是如此,主要的原因是它们在堆栈的处理上略有差异。混用可能会导致泄漏;
元明 2000-08-17
  • 打赏
  • 举报
回复
关注
kingwill 2000-08-17
  • 打赏
  • 举报
回复
TerminateThread函数和closehandle()函数配合使用,就可以避免资源泄露。
creative 2000-08-17
  • 打赏
  • 举报
回复
赞同strangecat的说法,TerminateThread的使用会导致各类资源释放问题,主要是与该线程相连的各类dll,他们无法得到线程退出的通知。应该在线程中自然退出(即隐式调用ExitThread)或直接显式调用ExitThread。退出的时机应由同步对象或其他机制来实现,而且主线程一般应使用WaitForSingleObject函数等待该线程的句柄,以确保线程的退出。
strangecat 2000-08-17
  • 打赏
  • 举报
回复
千万小心,TerminateThread是一个非常危险的函数!不要轻易使用
正常方法应该是在线程内部调用EndThread, __endthread等结束线程.如果需要在线程外部结束线程可以使用Event.在线程内某些点检查event是否被触发来决定是否结束线程
l634youngpig 2000-08-16
  • 打赏
  • 举报
回复
关注
leng 2000-08-16
  • 打赏
  • 举报
回复
退出你的线程控制函数便退出线程!
U皮特U 2000-08-16
  • 打赏
  • 举报
回复
线程内部使用AfxEndThread函数,线程外部使用TerminateThread函数。
Areslee 2000-08-16
  • 打赏
  • 举报
回复
EndThread(),TerminateThread(),afxEndThread()都可
onion 2000-08-16
  • 打赏
  • 举报
回复
查查MSDN不就清楚了。

15,472

社区成员

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

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