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>
34template <
typename Type>
50 typename std::vector<Type>::iterator last);
70template <
typename Type>
78template <
typename Type>
80: std::vector<Type>::vector(lv), mutex_(new
Mutex())
85template <
typename Type>
91template <
typename Type>
101template <
typename Type>
105 return mutex_->try_lock();
109template <
typename Type>
113 return mutex_->unlock();
119template <
typename Type>
124 std::vector<Type>::push_back(x);
129template <
typename Type>
134 std::vector<Type>::pop_back();
141template <
typename Type>
146 std::vector<Type>::erase(pos);
154template <
typename Type>
157 typename std::vector<Type>::iterator last)
160 std::vector<Type>::erase(first, last);
168template <
typename Type>
181template <
typename Type>
189 for (i = lv.begin(); i != lv.end(); ++i) {
204template <
typename Type>
210 typename std::vector<Type>::const_iterator i;
211 for (i = v.begin(); i != v.end(); ++i) {
void erase_locked(typename std::vector< Type >::iterator first, typename std::vector< Type >::iterator last)
Erase given element range with lock protection.
virtual bool try_lock() const
Try to lock vector.
LockVector< Type > & operator=(const std::vector< Type > &v)
Copy values from a standard vector.
virtual ~LockVector()
Destructor.
virtual void lock() const
Lock vector.
void push_back_locked(const Type &x)
Push element to vector at back with lock protection.
void erase_locked(typename std::vector< Type >::iterator pos)
Erase given element with lock protection.
RefPtr< Mutex > mutex() const
Get access to the internal mutex.
LockVector(const LockVector< Type > &lv)
Copy constructor.
void pop_back_locked()
Remove last element with lock protection.
virtual void unlock() const
Unlock vector.
LockVector< Type > & operator=(const LockVector< Type > &lv)
Copy values from another LockVector.
Mutex mutual exclusion lock.
RefPtr<> is a reference-counting shared smartpointer.
Fawkes library namespace.