class Foobara::LruCache
def cached(key)
def cached(key) mutex.synchronize do if @key_to_node.key?(key) node = @key_to_node[key] move_node_to_front(node) return node.value end end value = yield mutex.synchronize do if @key_to_node.key?(key) node = @key_to_node[key] move_node_to_front(node) else node = Node.new(key, value) @key_to_node[key] = node prepend_node(node) end end value end