25 #ifndef __CORE_UTILS_LOCK_SET_H_ 26 #define __CORE_UTILS_LOCK_SET_H_ 28 #include <core/threading/mutex.h> 29 #include <core/utils/refptr.h> 34 template <
typename KeyType,
35 typename LessKey = std::less<KeyType> >
36 class LockSet :
public std::set<KeyType, LessKey>
49 typedef typename std::set<KeyType, LessKey>::iterator
iterator;
75 template <
typename KeyType,
typename LessKey>
77 : __mutex(new
Mutex())
84 template <
typename KeyType,
typename LessKey>
86 :
std::set<KeyType, LessKey>::set(lm),
92 template <
typename KeyType,
typename LessKey>
98 template <
typename KeyType,
typename LessKey>
109 template <
typename KeyType,
typename LessKey>
118 template <
typename KeyType,
typename LessKey>
131 template <
typename KeyType,
typename LessKey>
132 std::pair<typename LockSet<KeyType, LessKey>::iterator,
bool>
136 std::pair<iterator, bool> ret =
137 std::set<KeyType, LessKey>::insert(key);
146 template <
typename KeyType,
typename LessKey>
151 std::set<KeyType, LessKey>::erase(key);
160 template <
typename KeyType,
typename LessKey>
174 template <
typename KeyType,
typename LessKey>
182 for (i = ll.begin(); i != ll.end(); ++i) {
198 template <
typename KeyType,
typename LessKey>
204 typename std::set<KeyType, LessKey>::const_iterator i;
205 for (i = l.begin(); i != l.end(); ++i) {
std::pair< iterator, bool > insert_locked(const KeyType &key)
Insert item with lock.
Fawkes library namespace.
void lock() const
Lock list.
LockSet< KeyType, LessKey > & operator=(const LockSet< KeyType, LessKey > &ll)
Copy values from another LockSet.
RefPtr< Mutex > mutex() const
Get access to the internal mutex.
bool try_lock() const
Try to lock list.
void erase_locked(const KeyType &key)
Remove item with lock.
void unlock() const
Unlock list.
virtual ~LockSet()
Destructor.
RefPtr<> is a reference-counting shared smartpointer.
std::set< KeyType, LessKey >::iterator iterator
Iterator.
Mutex mutual exclusion lock.