From ece58cc910112cf2bf7faa22c3dcbe8790c3b46f Mon Sep 17 00:00:00 2001 From: Zygo Blaxell Date: Sun, 5 Dec 2021 20:27:18 -0500 Subject: [PATCH] cache: add a method to get estimated cache size Estimated because there is no lock preventing the result from changing before it is used. Signed-off-by: Zygo Blaxell --- include/crucible/cache.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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)