24 #ifndef __CORE_UTILS_RWLOCK_VECTOR_H_ 25 #define __CORE_UTILS_RWLOCK_VECTOR_H_ 27 #include <core/threading/read_write_lock.h> 28 #include <core/utils/refptr.h> 36 template <
typename Type>
43 virtual void lock_for_read()
const;
44 virtual void lock_for_write()
const;
45 virtual bool try_lock_for_read()
const;
46 virtual bool try_lock_for_write()
const;
47 virtual void unlock()
const;
50 void push_back_locked(
const Type& x);
51 void pop_back_locked();
52 void erase_locked(
typename std::vector<Type>::iterator pos);
53 void erase_locked(
typename std::vector<Type>::iterator first,
54 typename std::vector<Type>::iterator last);
76 template <
typename Type>
85 template <
typename Type>
92 template <
typename Type>
98 template <
typename Type>
107 template <
typename Type>
118 template <
typename Type>
129 template <
typename Type>
138 template <
typename Type>
142 return __rwlock->
unlock();
149 template <
typename Type>
154 std::vector<Type>::push_back(x);
160 template <
typename Type>
165 std::vector<Type>::pop_back();
173 template <
typename Type>
178 std::vector<Type>::erase(pos);
186 template <
typename Type>
189 typename std::vector<Type>::iterator last)
192 std::vector<Type>::erase(first, last);
200 template <
typename Type>
214 template <
typename Type>
222 for (i = lv.begin(); i != lv.end(); ++i) {
238 template <
typename Type>
244 typename std::vector<Type>::const_iterator i;
245 for (i = v.begin(); i != v.end(); ++i) {
virtual void lock_for_read() const
Lock vector for reading.
Fawkes library namespace.
virtual void unlock() const
Unlock vector.
virtual bool try_lock_for_write() const
Try to lock vector for writing.
Read/write lock to allow multiple readers but only a single writer on the resource at a time...
virtual void lock_for_write() const
Lock vector for writing.
RefPtr<> is a reference-counting shared smartpointer.
virtual bool try_lock_for_read() const
Try to lock vector for reading.