ループで実行されるいくつかのコードを実装しました。
loop do
..
end
そのループでは、Curses ライブラリを使用してキープレスを処理します。Nを押して何かを入力すると、時間をカウントする新しいスレッドが開始されます(loop do .. end
再び)
問題は、CPU コアの 1 つで 100% の CPU 負荷が発生するのはなぜloop
ですか? while true
問題は実際にループしていますか?
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