毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 嵌入式 >> 正文

自旋锁获取多长时间比较合适

更新时间:2012-9-10:  来源:毕业论文

<<Windows驱动开发技术详解>>中有一段:

如果自旋锁已经被锁住,这时有程序申请“获取这个自旋锁”,程序则处于自旋状态。所谓自旋状态,就是不停的询问是否可以“获取”自旋锁。
......
而自旋锁原理则不同,它不会切换到别的线程,而是一直让这个线程“自旋”。因此,对自旋锁占用时间不宜过长,否则会导致申请自旋锁的其他线程处于自旋,折回浪费CPU宝贵的时间。

那我想问的问题是 : 1、自旋锁占用多久算比较合适?(即 占用时间 <= ??ms 算比较合适 ??)

2、假设我有一个int数组需要遍历,如果数组里有几百个项需要遍历,那时间会不会算多??int数组大到多少时就不适合用 自旋锁 来做同步了??

上面两个问题,请解答下。

总得来说,就是 自旋锁获取期间,执行多少条汇编指令算合适 ??那这个跟 具体CPU能力也有关系吧 ??
那我该如何拿捏这个度呢 ?像遍历这种操作是不适合放在自旋锁里面??
这几个问题也请指教下...
进入自旋锁后,通常中断已经被关闭,调度也已经被禁止。单一CPU下,CPU只专心处理一件事情,对其它紧急事件也置之不理。仅在多CPU情况下,其它CPU还可处理别的事件。
  可见,自旋锁锁定的时间应当越短越好,毫秒级的时间太长了,微妙级为宜。时间较长时,除非很必须的情况下,不应该使用,以免影响CPU对其它事件的响应速度。

1.微秒以下为好,这个没有具体的标准,越短越好。具体使用哪一个,你可以根据情况对比一下自旋锁、信号量、事件、Mutex,更适合使用哪一个。
2.几百个项的数组访问适合使用。
 
(1)比如你上面说的访问数组,要保护数组只能被单独访问,对比一下自旋锁、信号量、事件、Mutex,由于访问数组的时间很短,所以有自旋锁最合适。
(2)如要独占写数据到一个文件,使用Mutex最合适。
(3)如要等待一个IO完成,那么使用事件或信号量。

由于进入自旋锁后,中断通常被禁止;如果有紧急的中断希望50微妙内能够响应,那么,自旋锁锁定的时间就不应该超过50微妙。

  如果,整个系统中就没有特别紧急的事情,那么自旋锁的时间就可以长一点。可见,自旋锁的时间长短是因系统而定的,没有固定的时间限制。

  如果一段程序非常短,执行时间非常快,那么与信号量相比,采用自旋锁的好处是:不会被中断或调度打断,而来回进出一次浪费时间。

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。