linux-kernel – 为什么自旋锁在单处理器(unicore)系统中不起作用?

linux-kernel – 为什么自旋锁在单处理器(unicore)系统中不起作用?,第1张

概述我知道自旋锁与spining一起工作,存在不同的内核路径,并且内核是先发制人的,那么为什么自旋锁在单处理器系统中不起作用呢? (例如,在 Linux中) 如果我理解你的问题,你就会问为什么自旋锁在单核机器上是个坏主意. 它们仍然可以工作,但可能比真正的线程睡眠并发更昂贵: 当你使用自旋锁时,你基本上断言你认为你不必等待很长时间.您所说的是,您认为使用繁忙的循环维护处理器时间片比将线程休眠和上下文转 我知道自旋锁与spining一起工作,存在不同的内核路径,并且内核是先发制人的,那么为什么自旋锁在单处理器系统中不起作用呢? (例如,在 Linux中)解决方法 如果我理解你的问题,你就会问为什么自旋锁在单核机器上是个坏主意.

它们仍然可以工作,但可能比真正的线程睡眠并发更昂贵:

当你使用自旋锁时,你基本上断言你认为你不必等待很长时间.您所说的是,您认为使用繁忙的循环维护处理器时间片比将线程休眠和上下文转移到另一个线程或进程的成本更好.如果你需要等待很短的时间,你可以睡觉并且几乎立即重新唤醒,但是下降和降低的成本比等待的成本更高.

这在多核处理器上更可能是正常的,因为它们比单核处理器具有更好的并发性配置文件.在多核处理器上,在循环迭代之间,其他一些线程可能已经处理了您的先决条件.在单核处理器上,其他人不可能帮助你 – 你已经锁定了唯一的核心处理器.

这里的问题是,如果你等待或睡在一个锁上,你暗示系统你还没有你需要的所有东西,所以它应该做一些其他的东西,然后再回到你身边.使用自旋锁,你永远不会告诉系统这个,所以你把它锁起来等待其他事情发生 – 但同时,你把整个系统都拿起来,所以别的东西不会发生.

总结

以上是内存溢出为你收集整理的linux-kernel – 为什么自旋锁在单处理器(unicore)系统中不起作用?全部内容,希望文章能够帮你解决linux-kernel – 为什么自旋锁在单处理器(unicore)系统中不起作用?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1039810.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存