24 #ifndef __CORE_UTILS_LOCK_HASHMAP_H_ 25 #define __CORE_UTILS_LOCK_HASHMAP_H_ 27 #include <core/threading/mutex.h> 28 #include <core/utils/refptr.h> 29 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2) 30 # include <tr1/unordered_map> 32 # include <ext/hash_map> 38 template <
class KeyType,
40 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2) 41 class HashFunction = std::tr1::hash<KeyType>,
42 class EqualKey = std::equal_to<KeyType> >
43 class LockHashMap :
public std::tr1::unordered_map<KeyType, ValueType, HashFunction, EqualKey>
45 class HashFunction = __gnu_cxx::hash<KeyType>,
46 class EqualKey = std::equal_to<KeyType> >
47 class
LockHashMap :
public __gnu_cxx::hash_map<KeyType, ValueType, HashFunction, EqualKey>
81 template <
class KeyType,
class ValueType,
class HashFunction,
class EqualKey>
83 : __mutex(new
Mutex())
91 template <
class KeyType,
class ValueType,
class HashFunction,
class EqualKey>
93 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2) 94 : std::tr1::unordered_map<KeyType, ValueType, HashFunction, EqualKey>::unordered_map(lh)
96 : __gnu_cxx::hash_map<KeyType, ValueType, HashFunction, EqualKey>::hash_map(lh)
98 , __mutex(
new Mutex())
104 template <
class KeyType,
class ValueType,
class HashFunction,
class EqualKey>
111 template <
class KeyType,
class ValueType,
class HashFunction,
class EqualKey>
122 template <
class KeyType,
class ValueType,
class HashFunction,
class EqualKey>
126 return __mutex->try_lock();
131 template <
class KeyType,
class ValueType,
class HashFunction,
class EqualKey>
135 return __mutex->unlock();
143 template <
typename KeyType,
typename ValueType,
class HashFunction,
typename EqualKey>
157 template <
typename KeyType,
typename ValueType,
class HashFunction,
typename EqualKey>
166 for (i = ll.begin(); i != ll.end(); ++i) {
LockHashMap< KeyType, ValueType, HashFunction, EqualKey > & operator=(const LockHashMap< KeyType, ValueType, HashFunction, EqualKey > &ll)
Copy values from another LockHashMap.
RefPtr< Mutex > mutex() const
Get access to the internal mutex.
Fawkes library namespace.
bool try_lock() const
Try to lock map.
void unlock() const
Unlock map.
LockHashMap()
Constructor.
virtual ~LockHashMap()
Destructor.
void lock() const
Lock map.
RefPtr<> is a reference-counting shared smartpointer.
Mutex mutual exclusion lock.