阅读:1029回复:5
我开个帖子,大家讨论一下驱动程序的同步和多处理器安全问题用户被禁言,该主题自动屏蔽! |
|
沙发#
发布于:2003-12-12 09:57
根据自己的情况而定,单CPU单线程应该可以不需要。双CPU是必须的。
|
|
|
板凳#
发布于:2003-12-12 10:20
在单CPU下用自旋锁其实就是提升IRQL到DISPATCH―LEVEL,你可以反汇编HAL的SPINLOCK函数就知道了,所以最好用自旋锁来同步,根本就不用去使用IRQL操作,自旋锁里都帮你封装好了。。。。。。
|
|
|
地板#
发布于:2003-12-12 12:41
读是不需要的。
|
|
地下室#
发布于:2003-12-12 12:54
用户被禁言,该主题自动屏蔽! |
|
论坛版主
![]() |
5楼#
发布于:2003-12-12 17:10
这个东西不一点定的嘛,保不保护要看资源是否是互斥资源,如果多线程可能同时读写就要用。SPIN LOCK主要是在多处理器的时候让处理器同步,实际上是让其他处理器上跑的线程忙等。单处理器上SPIN LOCK的效果与直接用KERAISEIRQL效果一样,提到DISPATCH LEVEL禁止掉调度就可以,但是注意这时硬件中断打得进来,ISR里面不能访问刚才的互斥资源,访问动作放到DPC里面就行了吧,如果考虑代码的健壮性最好用SPIN LOCK,这样可以平台(HARDWARE)无关。
|
|