windchen
驱动牛犊
驱动牛犊
  • 注册日期2004-08-11
  • 最后登录2010-01-14
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2801回复:15

怎样在一个进程中创建两个线程?并用一个线程去终止另一个线程?

楼主#
更多 发布于:2005-01-31 10:14
怎样在MFC一个进程中创建两个线程?并用一个线程去终止另一个线程? 比如:我想在BUTTON1中建立一个线程,在里面运行一个循环;在BUTTON2中也建立一个线程,当BUTTON2按下的时候,能够终止BUTTON1中的循环?
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-31 10:21
怎样在MFC一个进程中创建两个线程?并用一个线程去终止另一个线程? 比如:我想在BUTTON1中建立一个线程,在里面运行一个循环;在BUTTON2中也建立一个线程,当BUTTON2按下的时候,能够终止BUTTON1中的循环?

那就在Button1和Button2中分别调用CreateThread创建不同的线成,
其实你要按Button2结束Button1创建的线成,没有不要创建线成2,你可以在创建线成1的时候创建一个事件,或者定义一个全局变量,线成1循环中去检测这个事件或变量来决定是继续运行还是退出,而当需要结束的时候,你只要设置这个事件或变量就可以了
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2005-01-31 10:39
看看WINDOWS核心编程吧......
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
hasis
驱动牛犊
驱动牛犊
  • 注册日期2003-01-07
  • 最后登录2006-04-03
  • 粉丝0
  • 关注0
  • 积分57分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-01-31 21:55
使用全局变量最好用,调用方使用extern对其全引用.

当然,使用内核对像,像事件等均不错.
大学课程加上语文吧,否则在驱网里都不会提问题:)
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-02-01 08:39
用button,可能有点悬乎!
windchen
驱动牛犊
驱动牛犊
  • 注册日期2004-08-11
  • 最后登录2010-01-14
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-02-03 14:17
我现在在BUTTON1中做了一个循环,设置了一个全局的变量,在BUTTON2中修改变量的值,但是我按BUTTON2都是没有反映的,想用多线程来做,但是又不知道线程怎么做?请问哪位有例子或者更好的建议?谢谢!!!!!!!!
xuzheng318
驱动牛犊
驱动牛犊
  • 注册日期2005-01-24
  • 最后登录2005-03-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-02-04 15:27
你要在botton2中中止botton1的线程!
windchen
驱动牛犊
驱动牛犊
  • 注册日期2004-08-11
  • 最后登录2010-01-14
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-02-05 08:18
是啊,请问怎么做?
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-02-05 08:24
是啊,请问怎么做?

这个方案我已经验证,绝对不能行!!!另外想别的方法。
windchen
驱动牛犊
驱动牛犊
  • 注册日期2004-08-11
  • 最后登录2010-01-14
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-02-05 10:51
多线程不可以那好象就没有别的办法了?!
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-02-05 11:34
多线程不可以那好象就没有别的办法了?!

你的程序必须连续执行吗?
windchen
驱动牛犊
驱动牛犊
  • 注册日期2004-08-11
  • 最后登录2010-01-14
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-02-14 08:47
是啊,就是要不停的循环执行,靠其他什么去终止它
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-02-14 09:36
是啊,就是要不停的循环执行,靠其他什么去终止它

事件、全局标志等等都可以
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
windchen
驱动牛犊
驱动牛犊
  • 注册日期2004-08-11
  • 最后登录2010-01-14
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-02-21 09:46
我设置了一个全局的变量,还是不行哟,点击BUTTON2都没有反应,哪位可以提供一个小例子供我学习一下?不胜感激!!
walkonthesky
驱动中牛
驱动中牛
  • 注册日期2003-11-26
  • 最后登录2012-11-06
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2005-03-01 09:58
你的问题是出在线程开的不对

你的两个BUTTON要可以响应点击应该是属于界面线程
每个BUTTON点击以后生成的应该是工作线程
这样就不会出现你说的情况了

另外你要的功能,所有的四种线程同步方式都可以解决你的问题
全局变量建议最好不要使用
程序一大,控制起来很犯人
[img]http://www.driverdevelop.com/forum/upload/walkonthesky/2004-07-08_2004-07-07_b847.gif[/img]
xbzjackey
驱动小牛
驱动小牛
  • 注册日期2002-12-27
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望34点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2005-03-09 13:34
用事件实现比较好
回答好的不要忘了给分哦。。。
游客

返回顶部