24 #ifndef __CORE_UTILS_LOCK_VECTOR_H_ 25 #define __CORE_UTILS_LOCK_VECTOR_H_ 27 #include <core/threading/mutex.h> 28 #include <core/utils/refptr.h> 36 template <
typename Type>
43 virtual void lock()
const;
45 virtual void unlock()
const;
50 void erase_locked(
typename std::vector<Type>::iterator pos);
51 void erase_locked(
typename std::vector<Type>::iterator first,
52 typename std::vector<Type>::iterator last);
74 template <
typename Type>
76 : __mutex(new
Mutex())
83 template <
typename Type>
85 :
std::vector<Type>::vector(lv), __mutex(new
Mutex())
90 template <
typename Type>
96 template <
typename Type>
107 template <
typename Type>
116 template <
typename Type>
127 template <
typename Type>
132 std::vector<Type>::push_back(x);
138 template <
typename Type>
143 std::vector<Type>::pop_back();
151 template <
typename Type>
156 std::vector<Type>::erase(pos);
164 template <
typename Type>
167 typename std::vector<Type>::iterator last)
170 std::vector<Type>::erase(first, last);
179 template <
typename Type>
193 template <
typename Type>
201 for (i = lv.begin(); i != lv.end(); ++i) {
217 template <
typename Type>
223 typename std::vector<Type>::const_iterator i;
224 for (i = v.begin(); i != v.end(); ++i) {
RefPtr< Mutex > mutex() const
Get access to the internal mutex.
void erase_locked(typename std::vector< Type >::iterator pos)
Erase given element with lock protection.
Fawkes library namespace.
void pop_back_locked()
Remove last element with lock protection.
virtual void lock() const
Lock vector.
void push_back_locked(const Type &x)
Push element to vector at back with lock protection.
virtual void unlock() const
Unlock vector.
LockVector< Type > & operator=(const LockVector< Type > &lv)
Copy values from another LockVector.
virtual ~LockVector()
Destructor.
RefPtr<> is a reference-counting shared smartpointer.
Mutex mutual exclusion lock.
virtual bool try_lock() const
Try to lock vector.