1
0
mirror of https://github.com/Zygo/bees.git synced 2025-05-17 21:35:45 +02:00

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 <bees@furryterror.org>
This commit is contained in:
Zygo Blaxell 2021-12-05 20:27:18 -05:00
parent 331cb142e3
commit ece58cc910

View File

@ -30,7 +30,7 @@ namespace crucible {
map<Key, ListIter> m_map; map<Key, ListIter> m_map;
LockSet<Key> m_lockset; LockSet<Key> m_lockset;
size_t m_max_size; size_t m_max_size;
mutex m_mutex; mutable mutex m_mutex;
void check_overflow(); void check_overflow();
void recent_use(ListIter vp); void recent_use(ListIter vp);
@ -48,6 +48,7 @@ namespace crucible {
void expire(Arguments... args); void expire(Arguments... args);
void insert(const Return &r, Arguments... args); void insert(const Return &r, Arguments... args);
void clear(); void clear();
size_t size() const;
}; };
template <class Return, class... Arguments> template <class Return, class... Arguments>
@ -190,6 +191,14 @@ namespace crucible {
lock.unlock(); lock.unlock();
} }
template <class Return, class... Arguments>
size_t
LRUCache<Return, Arguments...>::size() const
{
unique_lock<mutex> lock(m_mutex);
return m_map.size();
}
template<class Return, class... Arguments> template<class Return, class... Arguments>
Return Return
LRUCache<Return, Arguments...>::operator()(Arguments... args) LRUCache<Return, Arguments...>::operator()(Arguments... args)