kind=defined
names=mon_enter
visibility=public

--- mon_enter

モニターをロックします。一度に一つのスレッドだけがモニターをロックできます。
[[m:Mutex#lock]] に相当します。返り値は不定です。
Mutex#lock と違うのは現在のモニターの所有者が現在実行されているスレッドである場合、
何度でもロックできる点です。ロックした回数だけ mon_exit を呼ばなければモニターは
解放されません。

例:

  require 'monitor'
  buf = []
  buf.extend(MonitorMixin)
  buf.mon_enter
  buf.mon_enter

Mutex#lock ではデッドロックが起きます。

例:

  require 'thread'
  m = Mutex.new
  m.lock
  m.lock # => deadlock; recursive locking (ThreadError)

