gpt4 book ai didi

ruby - 互斥 sleep 占用大量 CPU

转载 作者:数据小太阳 更新时间:2023-10-29 07:19:35 24 4
gpt4 key购买 nike

我使用 ruby​​-prof 分析了我的基于事件机器的应用程序,发现以下内容很有趣:

                  5.28    0.00    5.28    0.00          4/4     Mutex#synchronize90.72%   0.00%    5.28    0.00    5.28    0.00            4     Mutex#sleep

我认为 ruby​​-prof 只计算 CPU 滴答,因此我无法弄清楚为什么互斥 sleep 可能会占用 CPU 时间。我假设它在内核级别休眠,不计入光纤时间。有任何想法吗?更好的是,我希望 Mutex#sleep 将控制权释放给事件机器,这样它就可以做其他事情。

最佳答案

如果 ruby​​-prof --mode=cpu 真的只占 CPU 时间,那么 Mutex#sleep 就是一个自旋锁:

http://en.wikipedia.org/wiki/Spinlock

这是有道理的,因为您只应该将非常短的分配包装在互斥锁中。设置信号警报的开销非常大。

因此,您面临的挑战是确定您正在休眠的互斥锁,以及它们包装的内容。然后,您会发现可以避免的互斥锁滥用,或者不可避免的等待时间。

关于ruby - 互斥 sleep 占用大量 CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5366644/

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