互斥睡眠占用了大量的CPU

Pra*_*nna 5 ruby mutex eventmachine ruby-prof

我用ruby-prof描述了我的基于事件机器的应用程序,发现了以下有趣内容:

                  5.28    0.00    5.28    0.00          4/4     Mutex#synchronize
90.72%   0.00%    5.28    0.00    5.28    0.00            4     Mutex#sleep

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

tad*_*man 0

据我所知,如果您陷入等待锁释放的状态,则该线程将陷入睡眠模式。保持 Eventmachine 运行的唯一方法是确保您的锁发生在单独的线程中。