newkey
驱动小牛
驱动小牛
  • 注册日期2002-10-03
  • 最后登录2013-10-13
  • 粉丝1
  • 关注0
  • 积分45分
  • 威望392点
  • 贡献值1点
  • 好评度90点
  • 原创分0分
  • 专家分0分
阅读:867回复:1

Spin Locks 问题请教

楼主#
更多 发布于:2007-04-09 18:28
  [p:2]

像下面的这种流程,选那种方案较好


方案一:
for (short shIndex=0; shIndex<100; shIndex++)
{
        KeAcquireSpinLock
        
        对共享数据的操作(可能需要1微妙)

        KeReleaseSpinLock
}


方案二:
KeAcquireSpinLock
for (short shIndex=0; shIndex<100; shIndex++)
{
        对共享数据的操作(可能需要1微妙)
}
KeReleaseSpinLock


按官方文档描述,SpinLock时间不要操作25微妙,那么只能选择方案一

1。不知道KeAcquireSpinLock和KeReleaseSpinLock函数操作是否消耗大量时间
2。如果大于25微妙,是否一定就蓝屏
3。是否只要对共享数据进行读也需要SpinLock

感谢指点
www.xDrv.com
Kalee
驱动牛犊
驱动牛犊
  • 注册日期2002-10-26
  • 最后登录2012-02-21
  • 粉丝0
  • 关注0
  • 积分358分
  • 威望47点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-04-09 20:41
方案二好,如果很少写,经常读那可以用读写锁,不蓝屏,我用比你上面复杂都经常用SpinLock
游客

返回顶部