class ActiveSupport::Concurrency::ThreadLoadInterlockAwareMonitor
:nodoc:
def initialize
def initialize @owner = nil @count = 0 @mutex = Mutex.new end
def mon_enter
def mon_enter @mutex.lock if @owner != Thread.current @owner = Thread.current @count += 1 end
def mon_exit
def mon_exit unless @owner == Thread.current raise ThreadError, "current thread not owner" end @count -= 1 return unless @count == 0 @owner = nil @mutex.unlock end
def mon_try_enter
def mon_try_enter if @owner != Thread.current return false unless @mutex.try_lock @owner = Thread.current end @count += 1 end