edriver
驱动小牛
驱动小牛
  • 注册日期2002-03-04
  • 最后登录2006-09-15
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1325回复:6

急问!关于双CPU!

楼主#
更多 发布于:2003-05-23 10:19
我的PCI driver在单CPU的机子运行良好,但是在双CPU上运行有问题,死机或重起!这是为什么呢?按理说单CPU版的driver在双CPU下应该能运行的呀!
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-05-23 10:26
双CPU可是可以真正的多线程了,没有考虑周全吧?
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-23 14:19
edriver兄说得没错,你一定是没有考虑周全,导致数据或其它资源的不完整,或者说被破坏,不应该写具有线程相关的代码,多使用Event、Mutex等
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
edriver
驱动小牛
驱动小牛
  • 注册日期2002-03-04
  • 最后登录2006-09-15
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-23 14:42
在我的driver可没有用多线程呀,在本论坛看了看这方面的例子,都说是因为spinlock引起的,主要是在调用startio函数,因为在调用该函数的时候,其内部会使用spinlock的,那各位老大,会不会是这个原因呢?
yjhleaf
驱动小牛
驱动小牛
  • 注册日期2001-11-04
  • 最后登录2005-11-23
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-05 20:45
其实你用系统排队的话,它只是在系统调用队列中用自旋锁保护了而已,在队列外面的话,你得自己加锁保护了。譬如你对一个端口进行读和写,第一个线程可能是CPU1在执行端口写,而同时第二个线程是CPU2在执行端口 读,这就会发生冲突了。
忽如一夜春风来,千树万树梨花开。
robin_wxg
驱动小牛
驱动小牛
  • 注册日期2003-02-10
  • 最后登录2009-09-21
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望6点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-06 08:50
加一些KeAcquireSpinLock()的保护。
yunyanrong
驱动小牛
驱动小牛
  • 注册日期2003-04-18
  • 最后登录2013-03-02
  • 粉丝0
  • 关注0
  • 积分1040分
  • 威望457点
  • 贡献值1点
  • 好评度90点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-06-17 19:45
你用的是DriverWorks么?

DriverWorks的默认工程中,好像已经设置为只让第一个CPU响应中断了。联系一下吧,QQ:22708952。
游客

返回顶部