自旋锁 获取多久为合适 ?这个时间又怎么确定呢 ?
<<Windows驱动开发技术详解>>中有一段:
“
如果自旋锁已经被锁住,这时有程序申请“获取这个自旋锁”,程序则处于自旋状态。所谓自旋状态,就是不停的询问是否可以“获取”自旋锁。
......
而自旋锁原理则不同,它不会切换到别的线程,而是一直让这个线程“自旋”。因此,对自旋锁占用时间不宜过长,否则会导致申请自旋锁的其他线程处于自旋,折回浪费CPU宝贵的时间。
”
那我想问的问题是 : 1、自旋锁占用多久算比较合适?(即 占用时间 <= ??ms 算比较合适 ??)
2、假设我有一个int数组需要遍历,如果数组里有几百个项需要遍历,那时间会不会算多??int数组大到多少时就不适合用 自旋锁 来做同步了??
上面两个问题,请解答下。
总得来说,就是 自旋锁获取期间,执行多少条汇编指令算合适 ??那这个跟 具体CPU能力也有关系吧 ??
那我该如何拿捏这个度呢 ?像遍历这种操作是不适合放在自旋锁里面??
这几个问题也请指教下...