superclass=Object
type=class
library=monitor
extended=
included=MonitorMixin

åɤƱȤƤΥ˥ǽ󶡤륯饹Ǥ
ޤƱåɤ鲿٤ lock Ǥ Mutex ȤƤεǽ󶡤ޤ

[[c:MonitorMixin]]  include Ĥ̾饹Ǥ

=== 

  require 'monitor'
  
  buf = []
  mon = Monitor.new
  empty_cond = mon.new_cond
  
  # consumer
  Thread.start do
    loop do
      mon.synchronize do
        empty_cond.wait_while { buf.empty? }
        print buf.shift
      end
    end
  end
  
  # producer
  while line = ARGF.gets
    mon.synchronize do
      buf.push(line)
      empty_cond.signal
    end
  end

2åƤǥåɥåˤʤʤǤ

   require 'monitor'
   mon = Monitor.new
   mon.synchronize {
     mon.synchronize{
     
     }
   }

[[c:Mutex]] Ǥϥǥåɥåˤʤޤ

   require 'thread'
   mx = Mutex.new
   mx.synchronize {
     mx.synchronize{

     }
   }
   # => deadlock; recursive locking (ThreadError)
