怎样在主线程中中止另外一个辅助线程,辅线程内最好不要时时检查某种状态之类的代码

gladfly 2004-01-02 12:47:35
曾听说过可以让辅助线程抛出异常的方式中止,那位高手知道麻烦告诉一声。
...全文
54 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
sursun 2004-01-07
  • 打赏
  • 举报
回复
线程中怎么建立消息循环呢?
danscort2000 2004-01-06
  • 打赏
  • 举报
回复
不过好像danscort2000说的方法不行,在删除辅助线程的指针的指针后,线程还是在继续工作的。

建议再试一下,因为这个方法我是在一本经典的教程里看到的,
线程被删除后,它的运转就终止了,
但是应该等一点时间让系统在切换线程的时候才生效
gladfly 2004-01-05
  • 打赏
  • 举报
回复
让辅助线程抛出异常的方式中止???这个,既然辅助线程知道要退出了,难道还退不出来,难道我理解有问题?
----------

我的意思是主线程可以随时中止辅助线程的运行,而最简单的方法就是让辅助线程抛出异常这种方式中止之,这样就不必理会线程资源回收等问题。

然后最好不必在辅助线程中需要时时检测线程消息或其他的信号这种方式,因为辅助线程中的多个函数需要长时间的运算。
nanzihebei 2004-01-05
  • 打赏
  • 举报
回复
我正好也碰到了跟楼主一样的问题,共同讨论!
不过好像danscort2000说的方法不行,在删除辅助线程的指针的指针后,线程还是在继续工作的。
JetLuo 2004-01-05
  • 打赏
  • 举报
回复
在线程中建立消息循环吧,如果不想自己构造,用用户界面线程,它现存的消息循环,强制终止线程的办法都不可靠
cxghj 2004-01-05
  • 打赏
  • 举报
回复
主线程随时中止辅助线程的运行这个到好办,但是会有资源泄漏的问题,只有在辅助线程自主退出的条件下,才不会有资源泄漏的问题。按照楼主的说法是让辅助线程抛出异常,那么辅助线程又如何知道在什么时候抛出异常呢,这个不也得有别的线程来告诉它,代码是线性执行的,除非是能够改变正在执行的代码,那么谁又能知道现在正在运行什么代码呢?以我现在的知识无法解答这个问题,热切关注这个问题!!!!!!
tgame 2004-01-04
  • 打赏
  • 举报
回复
让辅助线程抛出异常的方式中止???这个,既然辅助线程知道要退出了,难道还退不出来,难道我理解有问题?
yangkwch 2004-01-04
  • 打赏
  • 举报
回复
可以在辅助线程里面自己写消息循环,检查WM_QUIT消息,然后在主线程里面调用PostThreadMessage发送WM_QUIT消息,用WaitSingleObject等待返回就行了
gladfly 2004-01-02
  • 打赏
  • 举报
回复
用TeminateThread函数不行的,谁也不要用的。
broadoceans 2004-01-02
  • 打赏
  • 举报
回复
TeminateThread
danscort2000 2004-01-02
  • 打赏
  • 举报
回复
直接删除辅助线程的指针就可以了,虽然有点粗暴,但是确实省心有效。
gladfly 2004-01-02
  • 打赏
  • 举报
回复
up
gladfly 2004-01-02
  • 打赏
  • 举报
回复
up
gladfly 2004-01-02
  • 打赏
  • 举报
回复
设置Mutex的方式的话需要时时在辅助线程中检查mutex的状态,而我的辅线程里面要调用的函数很多,而且每一个函数执行的时间不定,这样做太烦效率也不高。最好能用让辅线程抛出异常的方式中止它。
NowCan 2004-01-02
  • 打赏
  • 举报
回复
但是楼主说不要 时时检查某种状态之类的代码
Semigod 2004-01-02
  • 打赏
  • 举报
回复
比较好的方法是:
设置一信号灯,如:CMutex ,在主线程想结束另一线程时,就将设置信号灯,而在线程中,
一但检测到CMutex 被置就自己做好收尾工作后退出执行。
内容简介: 本书通过一个模拟的实例,逐步介绍解决问题的思路、方法和良好的习惯,帮助刚入行的人员拿起手边简单的武器解决所遇到的问题。同时采用比较的方法介绍.net framework 4.0(c#4.0)的一些重要知识点。 本书分为两大部分:第一部分为线,讲述一个足够“大”(同时也是足够“小”)的模拟工程;第二部分为线,介绍c#以及.net framework的基础和特性,采用结合实际工程的方式来引入这些重要的知识点,说明为什么用它们以及怎么使用,并且阐述这些技术的限制,以帮助读者形成自己的技术判断能力,这些知识也是公司比较喜欢的面试题。两个部分相互索引,相相成,让读者了解实际工作可能遇到的问题和所需的知识点,也可以反过来学习这些技术在实际工作是如何选择和应用的。 最重要的是,本书将作者工作时的心得体会穿插在章节之。书所有的关键技术术语也会在括号给出对应的英文单词,以方便读者阅读及搜索外文资料。 本书针对因工作等需要使用c#(.net framework)来完成软件项目的人群,可供c#编程人员参考,也可作为大专院校使用c#进行编程课程的教材。 目录 Chapter 01工程开始(ProjectKickoff) 1.1 一个工作上的小问题 1.2 问题的快速分析 1.3 关键技术调研 1.3.1 查找已存在的方案 1.3.2 动手写第一个程序(第一个原型) 1.3.3 一步研究的成果(第二个原型) 1.3.4 代码整理 1.4 本章总结 Chapter02需求分析和工程计划 2.1 头脑风暴法(Brainstorming) 2.2 把功能归类 2.3 关键路径法(Critical Path Method) 2.4 本章总结 Chapter03先行 3.1 命名规范(NamingNotations) 3.2 编码约定(CodingConventions) 3.3 版本控制(RevisionControl) 3.4.本章总结 Chapter04快速原型 4.1 计划变更及分析 4.2 实现搜索局域网内机器的功能 4.3 单元测试与调试基础 4.3.1 使用MbUnit 4.3.2 使用NUnit 4.3.3 组合参数测试 4.4 功能整合 4.4.1 设计简单的用户界面 4.4.2 整合搜寻局域网内机器的功能 4.4.3 整合发消息功能 4.5 本章总结 Chapter05重构之上:多线程

15,471

社区成员

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

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