In message <199803020830.RAA24331 / picachu.netlab.co.jp> matz / netlab.co.jp (Yukihiro Matsumoto) writes: > % ruby -e 'Thread.stop; p 5' > 5 > > ....ブロックしません. ^^;;; % ruby -r thread -e 'm=Mutex.new; m.lock; m.lock; puts "a"' % ruby -r thread -e 'q=Queue.new; q.pop; puts "a"' はどちらもブロックするんですよね. Mutex の方は busy wait のコードが 入っているからわかるんですが, (while (Thread.critical = true; @locked)....end)Queue のほうは.... あ, よくみたら `until item' って 書いてある.... (^^; # つまり Queue に nil を push してもスレッドは解放されない, と. > つまり,rubyのスレッドライブラリがスレッドがmain一つしか無い > 時にはブロックしないのが原因ですね.これはどうあるべきなんで > しょうか.> 識者の皆様 > > (1) 永遠にブロックする > (2) エラーになる > (3) その他 Modula-3(もしくは Obliq)のライブラリだと同じスレッドが同じ mutex を acquire するとエラーになるようですが.... SR も同じ. あんまり関係 ないですね. この際. エラーになるか(例外の名前/文が.... (^^;), 無視する(現状通り?/warning でも出すとか)というのが無難なところでしょうか. # 永遠にブロックしてくれても別にうれしくないし. ====================================================================== 柳川 @ 情報システム学研究科 . 電気通信大学 katze / yuba.is.uec.ac.jp March 2, 1998 アリオッチ, アリオッチ, 血と魂を御身に捧ぐ!