lib/kisyo/cache.rb in kisyo-0.0.3 vs lib/kisyo/cache.rb in kisyo-0.0.4

- old
+ new

@@ -3,26 +3,33 @@ CACHE_SIZE = 100 def initialize @keys = [] @values = {} + @m = Mutex.new end def get(key) values[key] end def set(key, value) - keys << key - values[key] = value + m.synchronize do + if values[key] + return + end - if keys.size > CACHE_SIZE - oldest_key = keys.shift - values.delete(oldest_key) + keys << key + values[key] = value + + if keys.size > CACHE_SIZE + oldest_key = keys.shift + values.delete(oldest_key) + end end end private - attr_reader :keys, :values + attr_reader :keys, :values, :m end end