PMc*_*McK 14 spinlock busy-waiting
请解释为什么忙碌等待通常不赞成,而旋转通常被认为是好的.据我所知,它们都无限循环,直到满足某些条件.
Ola*_*tad 10
一个自旋锁通常是用来当有低争用资源,因此CPU只会让少数迭代,才可以继续前进做富有成效的工作.但是,锁定功能的库实现通常使用自旋锁定,然后是常规锁定.如果无法在合理的时间范围内获取资源,则使用常规锁定.这样做是为了通过快速获得锁定的设置中的上下文切换来减少开销.
繁忙等待这一术语往往意味着您愿意旋转并等待硬件寄存器或内存位置的更改.该术语并不一定意味着锁定,但它确实意味着在紧密循环中等待,反复探测变化.
您可能希望使用忙等待,以便检测您想立即响应的环境中的某种更改.因此,使用忙等待实现自旋锁.繁忙等待在任何情况下都非常有用,其中非常低的延迟响应比浪费CPU周期更重要(如某些类型的嵌入式编程).
与此相关的术语是"无锁"和"等待免费":
所谓的无锁算法倾向于使用紧急忙等待CAS指令,但争用在普通情况下如此之低,以至于CPU通常只需要迭代几次.
所谓的无等待算法根本不做任何繁忙的等待.
(请注意,«lock-free»和«wait-free»在学术环境中的使用略有不同,请参阅Wikipedia关于非阻塞算法的文章.)
归档时间: |
|
查看次数: |
6265 次 |
最近记录: |