土岐です。

スレッド中で IO::select を使うと、入力待ちの間 ruby の CPU の負荷が異
常に高くなります。

ruby -ve 'Thread.new{ IO::select([STDIN], [], []) }; sleep'
ruby 1.2.5(99/04/13) [i386-freebsd3.1]

このようなスクリプトを走らせると、

  PID USERNAME PRI NICE  SIZE    RES STATE    TIME   WCPU    CPU COMMAND
26986 toki      93   0  1588K  1160K RUN      2:28 94.36% 94.34% ruby
  224 root      30   0 57724K 20824K RUN      7:47  1.22%  1.22% XF86_SVGA.xtt
 1262 toki      10   0  1756K   952K nanslp   1:45  0.63%  0.63% xosview
  415 toki       2   0 10240K  8372K select   1:28  0.00%  0.00% mule
26873 toki       2   0 18896K 12596K select   0:33  0.00%  0.00% communicator-4

こんな具合に CPU の負荷がほとんど ruby に消費されてしまいます。どうや
らスレッドの切り替えが連続して空ループが回転しているのと同じ状態になっ
てるみたいです。

----------------------------------------------------------------------------
土岐 仁謙	神戸大学物理高エネ研 M2
URL: http://www3.phys.sci.kobe-u.ac.jp/~toki/index.html
PGP fingerprint = D0 A8 90 AB 73 F8 34 FE  CE CA DB BF 01 30 C0 35