もと@大計です.
ちょっと奇妙な現象に遭遇してしまったので,相談です.

ruby1.0-971125 + FreeBSD2.2.5R という環境です.
Thread と system() を組みあわせて使うと,どうも ruby が全力疾走を始め
てしまうみたいなのです.

以下の script を走らせて,top コマンドで CPU 使用状況を見てみました.

---------------------------------------------------------------------------
#!/usr/local/bin/ruby

system("sleep 30")
print "0\n"
np = Thread.new{
  sleep 30
  print "1\n"
  system("sleep 30")
  print "2\n"
}
Thread.join np
system("sleep 30")
---------------------------------------------------------------------------

すると,最初の system(), Thread の中の sleep の間は CPU もほとんど食わずに
おとなしくいるのですが,Thread 中の system() が始まると全力疾走をはじめる
みたいなのです.
Thread が終わって,最後の system() になると,ふたたびおとなしくなるみたい
ですが.


この問題と根っこは同じなのかもしれませんが,以下のスクリプトを走らせた
時も変なことが起こります.

---------------------------------------------------------------------------
#!/usr/local/bin/ruby

require "tk"

TkButton.new{
  text 'button'
  pack('side'=>'left')	# このへんはなんでもいいのですが.
}

np = Thread.new{
  system("who")		# 問題はこの文
  print "2\n"
  np.stop
}

Tk.mainloop
---------------------------------------------------------------------------
Thread の中の system() をコメントアウトすると,おとなしくしているのですが,
上記のように system() 文があると,そのあともずっと全力疾走しはじめるよう
です.

現象の報告だけで申し訳ないのですが,なにかわかりましたらばよろしくお願い
します.
#Thread と system() は組みあわせてはいけないのでしょうか?

それでは,失礼します.

---
moto