もと@大計です.
ちょっと奇妙な現象に遭遇してしまったので,相談です.
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