社区
进程/线程/DLL
帖子详情
如何终止一个线程?
joinjoy
2000-08-16 10:54:00
用AfxBeginThread启动的,如何在不需要的时候终止它的运行?
...全文
911
10
打赏
收藏
如何终止一个线程?
用AfxBeginThread启动的,如何在不需要的时候终止它的运行?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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不就清楚了。
如何优雅地
终止
一个
线程
?
我们的系统肯定有些
线程
为了保证业务需要是要常驻后台的,一般它们不会自己
终止
,需要我们通过手动来
终止
它们。我们知道启动
一个
线程
是start方法,自然有
一个
对应的
终止
线程
的stop方法,通过stop方法可以很快速、方便地
终止
一个
线程
,我们来看看stop的源代码。 通过注解@Deprecated看出stop方法被标为废弃的方法,jdk在以后的版本中可能被移除,不建议大家使用这种API。 那为什么这么...
Java中如何
终止
一个
线程
?
一、先看下Java中
线程
的状态二、如何
终止
一个
正在sleep、waiting、blocked状态的
线程
?方法1:优雅方案,发中断信号,
终止
的决定权交给业务代码/** * @Project...
Java中如何安全
终止
一个
线程
?
在最初的JDK版本中,Thread类提供了
一个
线程
终止
的方法stop()方法,但是现在在JDK源码中发现,stop()方法已经被废弃。主要原因是:stop()方法太过暴力。强制
终止
一个
正在执行的
线程
。这样的话会造成一些数据不一致的问题。 现在常用的是
线程
中断的方法:严格的讲,
线程
中断不会使
线程
立即退出,而是给
线程
发送
一个
通知,告诉目标
线程
,有人需要你退出啦!至于目标
线程
接到通知后如果处理,...
如何优雅的停止
一个
线程
?
通过上面的介绍我们知道了,
线程
终止
的主要两种方式,一种是interrupt一种是volatile,两种类似的地方都是通过标记来实现的,不过interrupt是中断信号传递,基于系统层次的,不受阻塞影响,而对于volatile,我们是利用其可见性而顶
一个
标记位标量,但是当出现阻塞等时无法进行及时的通知。在我们平时的开发中,我们视情况而定,并不是说必须使用interrupt,在一般情况下都是可以使用volatile的,但是这需要我们精确的掌握其中的场景。https。...
如何停止
一个
线程
?
1 如何停止
一个
线程
? 不能简单的停止(Stop())
一个
线程
。因为停止stop()会直接把
线程
停止,这样就没有给
线程
足够的时间来处理想要在停止前保存数据的逻辑,任务戛然而止,会导致出现数据完整性等问题; 虽然
线程
不能在中间被停止/干掉,但是任务是可以停止的;想让
线程
结束的目的是让任务结束,而不是强制
线程
结束。有两种方式结束任务,分别是:Interrupt和boolean标志位; 使用
线程
中断机制-interrupt停止
线程
,分2种情况。如果原生支持interrupt:sleep、wait等可以让
线程
进程/线程/DLL
15,471
社区成员
49,181
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章