阅读:1444回复:5
关于驱动与进程通信问题!急急!
我有一个PCI驱动程序,有一个主进程,进程有三个优先级级别的线程,线程与驱动的通信采用event方式,其交互过程是当线程运行完毕用waitforsingleobject处于睡眠,等PCI驱动有中断来时通过keSetEvent来唤醒相应的线程,三个线程waitforsingleobject的event不同。但是现在有这样的现象出现:
我的PCI驱动的中断是一直有,运行很长时间后,偶尔会出现驱动唤醒了低优先级的两个线程,但是没有唤醒最高优先级的线程,而且这种现象一直持续下去?这是为什么,是不是驱动与线程通信出问题了? |
|
沙发#
发布于:2004-08-20 13:52
会不会高优先级的线程发生了死锁?这样线程会被堵死,我觉的NT系统中,优先级越高也容易发生死锁,比如下面的程序在底优先级中可以正常运行,但在高优先级中就不运行了
for(;;) { do something; } |
|
|
板凳#
发布于:2004-08-21 11:49
死锁?我觉得不大可能,因为我的线程根本就没有等待其他资源,除了这个EVENT信号量,而且这个信号量也就这个线程等待,。
你能否说清楚一下你的死锁指的是?谢谢! |
|
地板#
发布于:2004-08-21 13:39
我意思是说,高优先级的线程停在了waitforsingleobject,即便有信号来,也不会继续运行,win2000的高优先级线程有时会出现这种问题,在你的循环中加入Sleep(0);可能会解决
|
|
|
地下室#
发布于:2004-08-21 14:57
Sleep(0)怎么加,加在waitforsingleobject什么地方?
谢谢! 另外,您有固定电话吗?我们可以电话讨论吗? 我的信箱是shapi1975@sohu.com |
|
5楼#
发布于:2004-08-21 15:01
0937-6262822
|
|
|