cy_jj
驱动牛犊
驱动牛犊
  • 注册日期2002-02-13
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1301回复:13

arthurtu:我已给你分了,我还有问题想向你请教!

楼主#
更多 发布于:2002-08-01 20:39
谢谢arthurtu的回答,虽然没有太大帮助,但还是要给分,我现在想用多线程来解决此问题,但遇到一个新问题,就是:
   如何终止这个新开线程?
   我在新线程中采用如下代码:
while(!bTerminate)
{
.......
}
然后在主线程中希望通过变化bTerminate的值来使其退出循环,可就是不能退出,通过softice观察,发现bTerminate值似乎改变不了,
是何原因,该如何解决呢?
simp
驱动牛犊
驱动牛犊
  • 注册日期2002-03-29
  • 最后登录2012-08-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望18点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-08-01 20:54
对于多线程的东西,最好不要按你这种方式写,可以用临界区或者事件什么的。
cy_jj
驱动牛犊
驱动牛犊
  • 注册日期2002-02-13
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-08-02 09:11
多谢,由于在DS中不知如何建立事件,还望提供一些帮助!
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-08-02 09:15
谢谢arthurtu的回答,虽然没有太大帮助,但还是要给分,我现在想用多线程来解决此问题,但遇到一个新问题,就是:
   如何终止这个新开线程?
   我在新线程中采用如下代码:
while(!bTerminate)
{
.......
}
然后在主线程中希望通过变化bTerminate的值来使其退出循环,可就是不能退出,通过softice观察,发现bTerminate值似乎改变不了,
是何原因,该如何解决呢?


这个我也遇到过,本来是想check到一个event然后将一个bool值置位,推出线程的,但是就是不行,最后只好使用teminatethread将线程kill了,你可以试试。
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
cy_jj
驱动牛犊
驱动牛犊
  • 注册日期2002-02-13
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-08-02 09:20
谢谢回答,我在主线程中曾尝试通过m_thread.Terminate()语句来实现,可每运行到此处时,系统总是挂起,不知zydcat是如何实现的?
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-08-02 09:33
谢谢回答,我在主线程中曾尝试通过m_thread.Terminate()语句来实现,可每运行到此处时,系统总是挂起,不知zydcat是如何实现的?


用这个
BOOL TerminateThread(
  HANDLE hThread,    // handle to thread
  DWORD dwExitCode   // exit code
);
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2002-08-02 09:43
faint!我回答的什么呀?好没有面子的说。
只在app层的话,用临界区比较好点。
cy_jj
驱动牛犊
驱动牛犊
  • 注册日期2002-02-13
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-08-02 10:37
应该是在驱动层,还想请问zydcat,TerminateThread在DS中该如何实现呢,我使用的是DS1.2.
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-08-02 10:39
你要在驱动中作多线程,不是吧。
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
cy_jj
驱动牛犊
驱动牛犊
  • 注册日期2002-02-13
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-08-02 14:00
驱动中不是可以另开一个系统线程的吗?
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
10楼#
发布于:2002-08-02 14:03
用PsCreateSystemThread
PsTerminateSystemThread不可以吗?
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
11楼#
发布于:2002-08-02 14:07
你的bTerminate是global的?!
考虑放到device extension去,把device extenstion当参数给你的thread。
在thread,比如:
while(!pDevExt->bTerminate)
{
....
}
cy_jj
驱动牛犊
驱动牛犊
  • 注册日期2002-02-13
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-08-02 18:38
谢谢arthurtu
你所说的是在DDK下的实现方法,可我现在用的是DS,不知DS下是否一样,如有什么高见,还望不吝赐教。
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
13楼#
发布于:2002-08-02 20:11
不会driverwork的东东。
其实他也只是封装了DDK而已。
游客

返回顶部