lib/mongoid/lock/synch_methods.rb in mongoid-lock-0.0.4 vs lib/mongoid/lock/synch_methods.rb in mongoid-lock-0.0.5

- old
+ new

@@ -1,9 +1,14 @@ require 'socket' +require 'thread' module Mongoid module Lock + def local_mutex + @__mutex ||= Mutex.new + end + def reset_lock! self.set(:lock_used_by, nil) end def lock_acquire @@ -25,15 +30,17 @@ raise Mongoid::Lock::UnsynchronizedAccess.new(ident) end end def synchronized(&block) - self.lock_acquire - begin - block.call() - ensure - self.lock_release - end + self.local_mutex.synchronized { + self.lock_acquire + begin + block.call() + ensure + self.lock_release + end + } end def try_synchronized(&try_block) begin self.synchronized do \ No newline at end of file