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