我实现了一些代码,它在循环中运行:
loop do
..
end
在那个循环中,我使用 Curses 库处理按键。如果我按 N 并输入一些东西,我会启动一个新线程,它计算时间(loop do .. end
再次)
问题是,为什么loop
或while true
导致其中一个 cpu 核心 100% 的 cpu 负载?问题实际上是在循环中吗?
有没有办法在 ruby 中以较低的 CPU 消耗进行无限循环?
此处提供的完整资源
UPD - 追踪
$ strace -c -p 5480
Process 5480 attached - interrupt to quit
^CProcess 5480 detached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
51.52 0.002188 0 142842 ioctl
24.21 0.001028 0 71421 select
14.22 0.000604 0 47614 gettimeofday
10.05 0.000427 0 47614 rt_sigaction
0.00 0.000000 0 25 write
0.00 0.000000 0 16 futex
------ ----------- ----------- --------- --------- ----------------
100.00 0.004247 309532 total