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