暂无图片
Oracle的闩会“自旋”吗?
我来答
分享
北斗
2023-02-17
Oracle的闩会“自旋”吗?

Oracle的闩会“自旋”吗?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新

闩是一种锁,锁是串行化设备,而串行化设备会妨碍可扩展性。

等待闩可能是一个代价很高的操作。如果闩不是立即可用的,就得等待(大多数情况下都是如此)。在一台多CPU机器上,会话会自旋(spin),也就是说,在循环中反复地尝试得到闩。

出现自旋的原因是上下文切换的开销很大(上下文切换是指被“踢出”CPU,然后又必须调度回CPU)。所以,如果进程不能立即得到闩,就会继续呆在CPU上,并立即再次尝试,而不是先休眠等到必须调度回CPU时才再次尝试。之所以呆在CPU上,是因为指望闩的持有者正在另一个CPU上忙于处理(由于闩设计为保持很短的时间,所以一般确实是这样的),而且会很快放弃闩。

暂无图片 评论
暂无图片 有用 12
打赏 0
暂无图片
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏