lib/redistat/mixins/synchronize.rb in redistat-0.3.0 vs lib/redistat/mixins/synchronize.rb in redistat-0.4.0
- old
+ new
@@ -1,51 +1,52 @@
require 'monitor'
module Redistat
module Synchronize
-
+
class << self
def included(base)
base.send(:include, InstanceMethods)
end
-
+
def monitor
@monitor ||= Monitor.new
end
-
+
def thread_safe
monitor.synchronize do
- @thread_safe ||= false
+ return @thread_safe unless @thread_safe.nil?
+ @thread_safe = false
end
end
-
+
def thread_safe=(value)
monitor.synchronize do
@thread_safe = value
end
end
end # << self
-
+
module InstanceMethods
def thread_safe
Synchronize.thread_safe
end
-
+
def thread_safe=(value)
Synchronize.thread_safe = value
end
-
+
def monitor
Synchronize.monitor
end
-
+
def synchronize(&block)
if thread_safe
monitor.synchronize(&block)
else
block.call
end
end
end # InstanceMethods
-
+
end
-end
\ No newline at end of file
+end