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