From: "URABE Shyouhei aka.mput" Date: 2006-03-10T00:09:45+09:00 Subject: [ruby-dev:28424] Monitor#synchronize and Thread#wakeup 卜部です。 以下のスクリプトを実行すると、手元ではt2のループ が一回しか回らないのですが、意図された挙動なんで しょうか? "loop { t1.wakeup }"の行をコメントアウトすれば、 ちゃんと毎秒t2が動いてることを観測できるのですが。 require "monitor" extend MonitorMixin def x(n) synchronize do x(n-1) unless n.zero? end end t1 = Thread.start do i = 0 loop do x(i) i += 1 end end t2 = Thread.start do loop do synchronize do sleep 1 p Time.now end end end loop { t1.wakeup } sleep