diff --git a/include/crucible/cache.h b/include/crucible/cache.h index 9a22cd5..f69e750 100644 --- a/include/crucible/cache.h +++ b/include/crucible/cache.h @@ -30,7 +30,7 @@ namespace crucible { map m_map; LockSet m_lockset; size_t m_max_size; - mutex m_mutex; + mutable mutex m_mutex; void check_overflow(); void recent_use(ListIter vp); @@ -48,6 +48,7 @@ namespace crucible { void expire(Arguments... args); void insert(const Return &r, Arguments... args); void clear(); + size_t size() const; }; template @@ -190,6 +191,14 @@ namespace crucible { lock.unlock(); } + template + size_t + LRUCache::size() const + { + unique_lock lock(m_mutex); + return m_map.size(); + } + template Return LRUCache::operator()(Arguments... args)