diff options
author | Joshua Peek <josh@joshpeek.com> | 2008-09-10 18:56:03 -0500 |
---|---|---|
committer | Joshua Peek <josh@joshpeek.com> | 2008-09-10 18:56:03 -0500 |
commit | 2ba9ca95f99c14cd95e90b7bb172ebb29ab25a72 (patch) | |
tree | ac99db08fa71da1052306f034239de62e3709d29 /activesupport | |
parent | 6ce13429cbc1359d85e1dc99c84561840e89d455 (diff) | |
download | rails-2ba9ca95f99c14cd95e90b7bb172ebb29ab25a72.tar.gz rails-2ba9ca95f99c14cd95e90b7bb172ebb29ab25a72.tar.bz2 rails-2ba9ca95f99c14cd95e90b7bb172ebb29ab25a72.zip |
Removed monitor from MemoryStore and created a seperate threadsafe store called SynchronizedMemoryStore
Diffstat (limited to 'activesupport')
-rw-r--r-- | activesupport/lib/active_support/cache/memory_store.rb | 50 | ||||
-rw-r--r-- | activesupport/lib/active_support/cache/synchronized_memory_store.rb | 46 |
2 files changed, 57 insertions, 39 deletions
diff --git a/activesupport/lib/active_support/cache/memory_store.rb b/activesupport/lib/active_support/cache/memory_store.rb index f3e4b8c13b..c1a713b4c5 100644 --- a/activesupport/lib/active_support/cache/memory_store.rb +++ b/activesupport/lib/active_support/cache/memory_store.rb @@ -3,63 +3,35 @@ module ActiveSupport class MemoryStore < Store def initialize @data = {} - @guard = Monitor.new - end - - def fetch(key, options = {}) - @guard.synchronize do - super - end end def read(name, options = nil) - @guard.synchronize do - super - @data[name] - end + super + @data[name] end def write(name, value, options = nil) - @guard.synchronize do - super - @data[name] = value.freeze - end + super + @data[name] = value.freeze end def delete(name, options = nil) - @guard.synchronize do - @data.delete(name) - end + super + @data.delete(name) end def delete_matched(matcher, options = nil) - @guard.synchronize do - @data.delete_if { |k,v| k =~ matcher } - end + super + @data.delete_if { |k,v| k =~ matcher } end def exist?(name,options = nil) - @guard.synchronize do - @data.has_key?(name) - end - end - - def increment(key, amount = 1) - @guard.synchronize do - super - end - end - - def decrement(key, amount = 1) - @guard.synchronize do - super - end + super + @data.has_key?(name) end def clear - @guard.synchronize do - @data.clear - end + @data.clear end end end diff --git a/activesupport/lib/active_support/cache/synchronized_memory_store.rb b/activesupport/lib/active_support/cache/synchronized_memory_store.rb new file mode 100644 index 0000000000..d2ff28768f --- /dev/null +++ b/activesupport/lib/active_support/cache/synchronized_memory_store.rb @@ -0,0 +1,46 @@ +module ActiveSupport + module Cache + class SynchronizedMemoryStore < MemoryStore + def initialize + super + @guard = Monitor.new + end + + def fetch(key, options = {}) + @guard.synchronize { super } + end + + def read(name, options = nil) + @guard.synchronize { super } + end + + def write(name, value, options = nil) + @guard.synchronize { super } + end + + def delete(name, options = nil) + @guard.synchronize { super } + end + + def delete_matched(matcher, options = nil) + @guard.synchronize { super } + end + + def exist?(name,options = nil) + @guard.synchronize { super } + end + + def increment(key, amount = 1) + @guard.synchronize { super } + end + + def decrement(key, amount = 1) + @guard.synchronize { super } + end + + def clear + @guard.synchronize { super } + end + end + end +end |