山本です。
>私の環境でも症状は出なくなりました。
>
>でも、Thread.pass を入れて解決、というのは違うんじゃないですか?
>
>Thread.pass で他のスレッドは動いたからといって、問題のスレッ
>ドが止まる前に戻ってくる可能性はあるわけですよね。
>
>RUBY_ALWAYS_GC のせいで ruby が遅いとか、他の (例えば root
>が nice で優先度をあげた) プロセスが突如激しく計算を行って
>ruby がしばらく遅いとかという状況で、SIGVTARLM が何回もくる
>とか。
すみません、ruby の Thread をよく理解してないので・・・
Thread.stop は @loop_thread の先頭にあるし、一回 pass してやれば
十分かと思ったのですが、確かに不十分だったかもしれません。
こんな感じでしょうか?
Index: generator.rb
===================================================================
RCS file: /src/ruby/lib/generator.rb,v
retrieving revision 1.7
diff -u -w -b -p -r1.7 generator.rb
--- generator.rb 30 Dec 2005 03:24:18 -0000 1.7
+++ generator.rb 30 Dec 2005 04:11:24 -0000
@@ -81,7 +81,7 @@ class Generator
@main_thread.wakeup
end
end
- Thread.pass # ensure @loop_thread to be stopped
+ Thread.pass until @loop_thread.stop?
self
end
|
Try Searching:
servers, voip, java, networking, microsoft ...
|
|
|
|