enter -> ()[permalink][rdoc][edit]mon_enter -> ()Ruby 2.7.0 から-
モニターをロックします。
一度に一つのスレッドだけがモニターをロックできます。既にモニターがロックされている場合は、ロックが開放されるまでそのスレッドは待ちます。
Thread::Mutex#lock に相当します。 Thread::Mutex#lock と違うのは現在のモニターの所有者が現在実行されているスレッドである場合、何度でもロックできる点です。ロックした回数だけ Monitor#exit を呼ばなければモニターは解放されません。
例require 'monitor' mon = Monitor.new mon.enter mon.enterThread::Mutex#lock ではデッドロックが起きます。
Mutex でデッドロックする例m = Mutex.new m.lock m.lock # => deadlock; recursive locking (ThreadError)