gpt4 book ai didi

自旋锁 vs 忙等待

转载 作者:行者123 更新时间:2023-12-03 22:35:29 29 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

上个月关门。




Improve this question




请解释为什么忙碌的等待通常被认为是不受欢迎的,而旋转通常被认为是可以的。据我所知,它们都无限循环,直到满足某个条件。

最佳答案

A 自旋锁通常在资源争用较少时使用,因此 CPU 在继续执行生产性工作之前只会进行几次迭代。但是,锁定功能的库实现通常使用自旋锁,然后是常规锁。如果无法在合理的时间范围内获取资源,则使用常规锁。这样做是为了减少在通常快速获得锁的设置中使用上下文切换的开销。

术语 忙等待往往意味着您愿意旋转并等待硬件寄存器或内存位置的更改。该术语不一定意味着锁定,但它确实意味着在一个紧密的循环中等待,反复探测更改。

您可能希望使用忙等待来检测您希望立即响应的环境中的某种变化。所以使用忙等待实现自旋锁。忙等待在非常低延迟响应比浪费 CPU 周期更重要的任何情况下都很有用(例如在某些类型的嵌入式编程中)。

与此相关的是术语“无锁”和“无等待”:

所谓的无锁算法倾向于使用带有 CAS 的紧忙等待。指令,但在普通情况下争用非常低,以至于 CPU 通常只需要迭代几次。

所谓的无等待算法根本不做任何忙等待。

(请注意,«lock-free» 和 «wait-free» 在学术环境中的使用略有不同,请参阅维基百科关于 Non-blocking algorithms 的文章。)

关于自旋锁 vs 忙等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38124337/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com