0

http://www.ruby-doc.org/stdlib/libdoc/monitor/rdoc/index.htmlの例に従い、コードを少し変更しました。

require 'monitor.rb'

buf = []
buf.extend(MonitorMixin)
empty_cond = buf.new_cond

producer = Thread.start do
# producer
line = "produce at #{Time.now}"
#while line
  buf.synchronize do
    puts "==> #{line}"
    buf.push(line)
    empty_cond.signal
  end
  sleep(2)
  #line = "produce at #{Time.now}"
#end
end

loop do
   buf.synchronize do
      empty_cond.wait_while { buf.empty? }
      item = buf.shift
      puts "got #{item.inspect}"
   end
end

プログラムを実行させました。約 5 分後、「セグメンテーション違反」がスローされます。デッドロックに関連する何か?

/ジャック

4

1 に答える 1