stride
驱动牛犊
驱动牛犊
  • 注册日期2002-11-23
  • 最后登录2005-12-28
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1444回复:5

关于驱动与进程通信问题!急急!

楼主#
更多 发布于:2004-08-20 10:57
我有一个PCI驱动程序,有一个主进程,进程有三个优先级级别的线程,线程与驱动的通信采用event方式,其交互过程是当线程运行完毕用waitforsingleobject处于睡眠,等PCI驱动有中断来时通过keSetEvent来唤醒相应的线程,三个线程waitforsingleobject的event不同。但是现在有这样的现象出现:
我的PCI驱动的中断是一直有,运行很长时间后,偶尔会出现驱动唤醒了低优先级的两个线程,但是没有唤醒最高优先级的线程,而且这种现象一直持续下去?这是为什么,是不是驱动与线程通信出问题了?
AthlonxpX86
驱动小牛
驱动小牛
  • 注册日期2002-11-10
  • 最后登录2013-07-17
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望43点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-08-20 13:52
会不会高优先级的线程发生了死锁?这样线程会被堵死,我觉的NT系统中,优先级越高也容易发生死锁,比如下面的程序在底优先级中可以正常运行,但在高优先级中就不运行了
for(;;)
{
do something;
}
AthlonxpX86(桃源村)
stride
驱动牛犊
驱动牛犊
  • 注册日期2002-11-23
  • 最后登录2005-12-28
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-08-21 11:49
死锁?我觉得不大可能,因为我的线程根本就没有等待其他资源,除了这个EVENT信号量,而且这个信号量也就这个线程等待,。

你能否说清楚一下你的死锁指的是?谢谢!
AthlonxpX86
驱动小牛
驱动小牛
  • 注册日期2002-11-10
  • 最后登录2013-07-17
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望43点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-08-21 13:39
我意思是说,高优先级的线程停在了waitforsingleobject,即便有信号来,也不会继续运行,win2000的高优先级线程有时会出现这种问题,在你的循环中加入Sleep(0);可能会解决
AthlonxpX86(桃源村)
stride
驱动牛犊
驱动牛犊
  • 注册日期2002-11-23
  • 最后登录2005-12-28
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-08-21 14:57
Sleep(0)怎么加,加在waitforsingleobject什么地方?
谢谢!
另外,您有固定电话吗?我们可以电话讨论吗?
我的信箱是shapi1975@sohu.com
AthlonxpX86
驱动小牛
驱动小牛
  • 注册日期2002-11-10
  • 最后登录2013-07-17
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望43点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-08-21 15:01
0937-6262822
AthlonxpX86(桃源村)
游客

返回顶部