From: "Motoyuki S." Date: 1997-11-28T23:07:47+09:00 Subject: [ruby-list:5479] Thread and system もと@大計です. ちょっと奇妙な現象に遭遇してしまったので,相談です. 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