社区
进程/线程/DLL
帖子详情
线程的终止问题
laole
2000-04-24 02:11:00
加精
有一个线程,是阻塞方式调用的,调用的方式为
AfxBeginThread(.....);
WaitForSingleObject(thread,...);
当线程没有完成之前!
我怎样才能终止它呢?
例如线程是在ontimer中进行的,用户点机了系统中的
退出菜单,这样才能很快退出,而不让用户等候?
...全文
1618
15
打赏
收藏
线程的终止问题
有一个线程,是阻塞方式调用的,调用的方式为 AfxBeginThread(.....); WaitForSingleObject(thread,...); 当线程没有完成之前! 我怎样才能终止它呢? 例如线程是在ontimer中进行的,用户点机了系统中的 退出菜单,这样才能很快退出,而不让用户等候?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wpmsoft
2000-08-24
打赏
举报
回复
这个问题也正困着我,还有更详细的帮助吗?谢谢。
五行擒拿术
2000-08-21
打赏
举报
回复
laole:
你是怎样强行终止线程的?你说的终止是从线程外部终止吗?调用TerminateThread()??没有内存泄露?TerminateThread不会释放线程的栈呀。
我也遇到了这种问题,辅助线程是一个下载的线程,如果在线程中用
while( m_IsStop )
{
...
处理程序段;
}
检测变量的方式来终止线程,则会因为“处理程序段”的执行时间过长(是一段从Internet上读数据的代码),而造成用户等待时间过长。而用TerminateThread()从外部终止线程,又会引起内存的泄露,怎么办?有没有办法能够立即终止线程,而不需要等待线程自己来退出??
五行擒拿术
2000-08-21
打赏
举报
回复
laole:
lsm78
2000-08-09
打赏
举报
回复
three way you can cancel you thread program:
1: use the TerminateThread funtion
2: use the ExitThread
3: selfdefine a message
all these way can be founded in msdn if you have any problem
please mail to me smli@bj.bexcom.com
dcrwy
2000-07-26
打赏
举报
回复
你用的一定是辅助线程,解决方法如下:
1.首先定义一个全局事件对象
CEVENT eventKill;
2.在线程中加入
for(...)
{
//此处加入你的程序
//然后
if(WaitForSingleObject(eventKill,0)==WAIT_OBJECT_0)
{
//退出处理
return 0;
}
}
此处的目的是在每次循环结束检测事件是否发生,不管是否发生都立即返回,如返回WAIT_OBJECT_0
则说明已发生,此时退出即可,
3.需要终止线程的时候,在主线程中调用
eventKill.SetEvent();
即可
Gold_Eg
2000-06-22
打赏
举报
回复
最好的办法就是发一个它正在等待的事件,用欺骗的方法使之认为条件满足,并设置一
标志,然后在它接下来的处理中检查这个标志,再决定是否退出
laole
2000-04-24
打赏
举报
回复
2位大下的方法我有时间再试!
laole
2000-04-24
打赏
举报
回复
谢谢各位大下,此问题已经解决.
我修改了子现成的模块,定义了消息
主现成里面用非阻塞的方式调用,界面
不会四掉,退出的时候,强行终止子现成.
sunsetyang
2000-04-24
打赏
举报
回复
在主线程中生成一个event,作为标记是否要退出线程的标记。
h[0]=主线程中的event;
h[1]=工作线程中的event:
在工作线程中使用:
i=WaitForMultipleObjectsEx(2, h, FALSE, INFINITE, FALSE);
if(i==0) TerminateThread();
要退出时只需在主线程中对event调用:SetEvent(event)即可。
在你的处理中,只要对菜单的响应中写入SetEvent即可。
telan
2000-04-24
打赏
举报
回复
在主线程中用:
MsgWaitForMultipleObjects(...)
代替
WaitForSingleObject(...)的调用。
(我没有试过,你可以试试)
laole
2000-04-24
打赏
举报
回复
我的程序是定时的从一个服务器取数据,取数据的过程用的是一个线程。
在时间到来的时候,我就开一个取数据的线程,当然用的是阻塞模式,如
果用户想退出,必须等待线程结束,这样很不友好。有没有什么好的方法
让我的程序改动最小,当用户退出的时候,系统很快进行响应?
laole
2000-04-24
打赏
举报
回复
telan大侠,我是在主线程中调用了waitforsingleobject(。。。。)
而且这个程序都做好了,发现要退出程序,必须中止线程。现在有没有什么方法
在不改变程序结构的前提下,中止线程呢?
telan
2000-04-24
打赏
举报
回复
你是不是在主线程的某个地方调用了
WaitForSingleObject(thread,...)
如果是这样的话,主线程当然会阻塞在
这儿,当然就对用户界面的操作没有反应。
不知道你要实现什么功能,但是应该可以用这样的
方式:
子线程结束之前,给主线程发一个自定义消息,通知
子线程的工作已经完成;SendMessage(....),然后
主线程可以在响应自定义消息的函数中接着做余下的
事情,这样主界面就不会死掉了。
laole
2000-04-24
打赏
举报
回复
现在的问题是,当我点击退出系统的时候,系统根本不对用户的
消息进行响应。而是仍然等待子线程的结束,这是为什么?
是线程的优先级的问题吗?可是我把它设置成LOWEST,还是不行压
telan
2000-04-24
打赏
举报
回复
当然用TerminateThread(..)函数是不太好的,最好当然是主线程通知
子线程终止,比如可以用事件,在子线程的某个地方也:
WaitForSingleObject(hEvent...)或WaitForMultiObjetc,主线程想关闭
子线程时就SetEvent(hEvent).
JAVA多
线程
精讲下
本课程是《零基础学Java》系列课程中的多
线程
相关课程.授课形式延续了之前课程的授课风格。内容细腻、详尽,由浅入深!通过本门课程的学习你可以深刻理解Java多
线程
的原理及实现运行机制,深刻学习多
线程
的生命周期、调度、控制等内容。多
线程
精讲下课程内容涵盖如下:l
线程
的同步(
线程
安全
问题
)l
线程
的死锁l
线程
间通信l
线程
组l
线程
池l 多
线程
的第三种实现方案l 匿名内部类方式使用多
线程
l 定时器的使用l 多
线程
面试题
【JavaSE专栏87】
线程
终止
问题
,什么情况下需要
终止
线程
,如何
终止
Java
线程
?
本文讲解了 Java 中
线程
终止
的概念,讲解了如何
终止
Java
线程
,并给出了样例代码,
线程
终止
是指
线程
的执行结束或被中断的过程,在
终止
线程
时需要考虑
线程
安全性和资源释放的
问题
,
线程
应该在合适的时机进行清理和关闭,以避免资源泄漏和数据一致性
问题
。
【JAVA-Day87】
线程
终止
问题
欢迎来到默语博客!本文将探讨
线程
终止
的
问题
,在多
线程
编程中,了解何时需要
终止
线程
以及如何正确
终止
Java
线程
至关重要。通过深入理解
线程
终止
的原理和实践技巧,你将能够更好地处理
线程
终止
相关的场景,提高多
线程
编程技能。让我们一起来探索
线程
终止
的奥秘吧!在本文中,我们深入探讨了
线程
终止
的概念、原理和实践技巧。
线程
终止
作为多
线程
编程中的重要
问题
,对于提高程序的稳定性和性能具有重要意义。理解
线程
终止
的概念和原理是多
线程
编程的基础,能够帮助我们更好地管理
线程
,避免资源泄露和程序异常。掌握不同的
线程
终止
方法,如使用。
如何
终止
java
线程
终止
线程
的三种方法 有三种方法可以使
终止
线程
。 1. 使用退出标志,使
线程
正常退出,也就是当run方法完成后
线程
终止
。 2. 使用stop方法强行
终止
线程
(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。 3. 使用interrupt方法中断
线程
。 1. 使用退出标志
终止
线程
python
线程
终止
线程
通过
线程
终止
线程
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章