24 #ifndef _CORE_UTILS_LOCK_MAP_H_
25 #define _CORE_UTILS_LOCK_MAP_H_
27 #include <core/threading/mutex.h>
28 #include <core/utils/refptr.h>
34 template <
typename KeyType,
typename ValueType,
typename LessKey = std::less<KeyType>>
35 class LockMap :
public std::map<KeyType, ValueType, LessKey>
68 template <
typename KeyType,
typename ValueType,
typename LessKey>
76 template <
typename KeyType,
typename ValueType,
typename LessKey>
78 : std::map<KeyType, ValueType, LessKey>::map(lm), mutex_(new
Mutex())
83 template <
typename KeyType,
typename ValueType,
typename LessKey>
89 template <
typename KeyType,
typename ValueType,
typename LessKey>
99 template <
typename KeyType,
typename ValueType,
typename LessKey>
103 return mutex_->try_lock();
107 template <
typename KeyType,
typename ValueType,
typename LessKey>
111 return mutex_->unlock();
118 template <
typename KeyType,
typename ValueType,
typename LessKey>
123 std::map<KeyType, ValueType, LessKey>::erase(key);
131 template <
typename KeyType,
typename ValueType,
typename LessKey>
144 template <
typename KeyType,
typename ValueType,
typename LessKey>
152 for (i = ll.begin(); i != ll.end(); ++i) {
167 template <
typename KeyType,
typename ValueType,
typename LessKey>
173 typename std::map<KeyType, ValueType, LessKey>::const_iterator i;
174 for (i = l.begin(); i != l.end(); ++i) {
void lock() const
Lock list.
LockMap< KeyType, ValueType, LessKey > & operator=(const std::map< KeyType, ValueType, LessKey > &l)
Copy values from a standard map.
LockMap< KeyType, ValueType, LessKey > & operator=(const LockMap< KeyType, ValueType, LessKey > &ll)
Copy values from another LockMap.
virtual ~LockMap()
Destructor.
RefPtr< Mutex > mutex() const
Get access to the internal mutex.
bool try_lock() const
Try to lock list.
void unlock() const
Unlock list.
void erase_locked(const KeyType &key)
Remove item with lock.
LockMap(const LockMap< KeyType, ValueType, LessKey > &lm)
Copy constructor.
Mutex mutual exclusion lock.
RefPtr<> is a reference-counting shared smartpointer.
Fawkes library namespace.