24 #ifndef __CORE_UTILS_LOCK_HASHSET_H_ 25 #define __CORE_UTILS_LOCK_HASHSET_H_ 27 #include <core/threading/mutex.h> 28 #include <core/utils/refptr.h> 30 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2) 31 # include <tr1/unordered_set> 33 # include <ext/hash_set> 39 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 LockHashSet :
public std::tr1::unordered_set<KeyType, HashFunction, EqualKey>
45 class HashFunction = __gnu_cxx::hash<KeyType>,
46 class EqualKey = std::equal_to<KeyType> >
47 class
LockHashSet :
public __gnu_cxx::hash_set<KeyType, HashFunction, EqualKey>
83 template <
class KeyType,
class HashFunction,
class EqualKey>
85 : __mutex(new
Mutex())
92 template <
class KeyType,
class HashFunction,
class EqualKey>
94 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2) 95 : std::tr1::unordered_set<KeyType, HashFunction, EqualKey>::unordered_set(lh),
97 : __gnu_cxx::hash_set<KeyType, HashFunction, EqualKey>::hash_set(lh),
104 template <
class KeyType,
class HashFunction,
class EqualKey>
110 template <
class KeyType,
class HashFunction,
class EqualKey>
121 template <
class KeyType,
class HashFunction,
class EqualKey>
125 return __mutex->try_lock();
130 template <
class KeyType,
class HashFunction,
class EqualKey>
134 return __mutex->unlock();
141 template <
class KeyType,
class HashFunction,
class EqualKey>
155 template <
typename KeyType,
class HashFunction,
class EqualKey>
168 template <
typename KeyType,
class HashFunction,
class EqualKey>
177 for (i = ll.begin(); i != ll.end(); ++i) {
LockHashSet< KeyType, HashFunction, EqualKey > & operator=(const LockHashSet< KeyType, HashFunction, EqualKey > &ll)
Copy values from another LockHashSet.
bool try_lock() const
Try to lock set.
Fawkes library namespace.
virtual ~LockHashSet()
Destructor.
LockHashSet()
Constructor.
RefPtr< Mutex > mutex() const
Get access to the internal mutex.
void unlock() const
Unlock set.
void insert_locked(const KeyType &x)
Insert element to hash set with lock protection.
RefPtr<> is a reference-counting shared smartpointer.
Mutex mutual exclusion lock.
void lock() const
Lock set.