Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > library monitor > module MonitorMixin > mon_enter

instance method MonitorMixin#mon_enter

mon_enter

モニターをロックします。一度に一つのスレッドだけがモニターをロックできます。 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)