30 template <
typename ValueT>
31 void Push(ValueT &&value) {
32 std::lock_guard<std::mutex> lock(
_mutex);
33 auto new_list = std::make_shared<ListT>(*
Load());
34 new_list->emplace_back(std::forward<ValueT>(value));
39 std::lock_guard<std::mutex> lock(
_mutex);
40 auto new_list = std::make_shared<ListT>(*
Load());
41 auto begin = new_list->begin();
42 std::advance(
begin, index);
43 new_list->erase(
begin);
47 template <
typename ValueT>
50 std::lock_guard<std::mutex> lock(
_mutex);
52 auto new_list = std::make_shared<ListT>(*
Load());
53 new_list->erase(std::remove(new_list->begin(), new_list->end(), value), new_list->end());
59 std::lock_guard<std::mutex> lock(
_mutex);
60 _list = std::make_shared<ListT>();
64 std::shared_ptr<const ListT>
Load()
const {
auto begin() const noexcept
名称范围迭代支持
std::shared_ptr< T > load() const noexcept
原子加载当前指针值
void DeleteByValue(const ValueT &value)
void Push(ValueT &&value)
void DeleteByIndex(size_t index)
std::shared_ptr< const ListT > Load() const
返回指向列表的指针。
AtomicSharedPtr< const ListT > _list