1#ifndef DA_CONCURRENT_VECTOR_HPP
2#define DA_CONCURRENT_VECTOR_HPP
22 using vector_type = std::vector< T >;
23 using value_type = vector_type::value_type;
24 using reference = vector_type::reference;
25 using const_reference = vector_type::const_reference;
26 using size_type = vector_type::size_type;
27 using iterator = vector_type::iterator;
28 using const_iterator = vector_type::const_iterator;
29 using mutex_type = std::mutex;
30 using lock_guard_type = std::lock_guard< mutex_type >;
31 using unique_lock_type = std::unique_lock< mutex_type >;
39 const_reference front()
const;
41 const_reference back()
const;
43 size_type size()
const;
45 iterator insert(iterator pos,
const T& value);
46 iterator insert(const_iterator pos,
const T& value);
47 void insert(iterator pos, size_type count,
const T& value);
48 iterator insert(const_iterator pos, size_type count,
const T& value);
49 void push_back(
const T& value);
50 void push_front(
const T& value);
53 iterator erase(iterator pos);
54 iterator erase(const_iterator pos);
55 iterator erase(iterator first, iterator last);
56 iterator erase(const_iterator first, const_iterator last);
58 const_iterator begin()
const;
60 const_iterator end()
const;
63 vector_type< T > m_inner_list;
64 mutable mutex_type m_mutex;
90 unique_lock_type lg(m_mutex);
92 return (m_inner_list.front());
98 unique_lock_type lg(m_mutex);
100 return (m_inner_list.front());
103template<
typename T >
106 unique_lock_type lg(m_mutex);
108 return (m_inner_list.back());
111template<
typename T >
114 unique_lock_type lg(m_mutex);
116 return (m_inner_list.back());
119template<
typename T >
122 unique_lock_type lg(m_mutex);
124 return (m_inner_list.empty());
127template<
typename T >
130 unique_lock_type lg(m_mutex);
132 return (m_inner_list.size());
135template<
typename T >
138 unique_lock_type lg(m_mutex);
140 m_inner_list.clear();
143template<
typename T >
146 unique_lock_type lg(m_mutex);
148 return (m_inner_list.insert(pos, value));
151template<
typename T >
154 unique_lock_type lg(m_mutex);
156 return (m_inner_list.insert(pos, value));
159template<
typename T >
162 unique_lock_type lg(m_mutex);
164 m_inner_list.insert(pos, count, value);
167template<
typename T >
169 da_concurrent_vector< T >::size_type count,
172 unique_lock_type lg(m_mutex);
174 return (m_inner_list.insert(pos, count, value));
177template<
typename T >
180 unique_lock_type lg(m_mutex);
182 m_inner_list.push_back(value);
185template<
typename T >
188 unique_lock_type lg(m_mutex);
190 m_inner_list.push_front(value);
193template<
typename T >
196 unique_lock_type lg(m_mutex);
198 m_inner_list.pop_front();
201template<
typename T >
204 unique_lock_type lg(m_mutex);
206 m_inner_list.pop_back();
209template<
typename T >
212 unique_lock_type lg(m_mutex);
214 return (m_inner_list.erase(pos));
217template<
typename T >
220 unique_lock_type lg(m_mutex);
222 return (m_inner_list.erase(pos));
225template<
typename T >
227 da_concurrent_vector< T >::iterator last)
229 unique_lock_type lg(m_mutex);
231 return (m_inner_list.erase(first, last));
234template<
typename T >
236 da_concurrent_vector< T >::const_iterator last)
238 unique_lock_type lg(m_mutex);
240 return (m_inner_list.erase(first, last));
243template<
typename T >
246 unique_lock_type lg(m_mutex);
248 return (m_inner_list.begin());
251template<
typename T >
254 unique_lock_type lg(m_mutex);
256 return (m_inner_list.begin());
259template<
typename T >
262 unique_lock_type lg(m_mutex);
264 return (m_inner_list.end());
267template<
typename T >
270 unique_lock_type lg(m_mutex);
272 return (m_inner_list.end());
线程安全的list封装
Definition da_concurrent_vector.hpp:20