mirror of
https://github.com/mutouyun/cpp-ipc.git
synced 2025-12-06 16:56:45 +08:00
add: [concur] add push & pop for queue (TBD)
This commit is contained in:
parent
0b4f69266f
commit
934bb31778
@ -38,8 +38,8 @@ private:
|
|||||||
: header_(std::forward<U>(model)) {}
|
: header_(std::forward<U>(model)) {}
|
||||||
|
|
||||||
/// \brief element<value_type> elements[0];
|
/// \brief element<value_type> elements[0];
|
||||||
element<value_type> *elements() noexcept {
|
::LIBIMP::span<element<value_type>> elements() noexcept {
|
||||||
return &elements_start_;
|
return {&elements_start_, header_.circ_size};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -74,6 +74,29 @@ public:
|
|||||||
MR *memory_resource = ::LIBPMR::new_delete_resource::get()) noexcept
|
MR *memory_resource = ::LIBPMR::new_delete_resource::get()) noexcept
|
||||||
: data_allocator_(memory_resource)
|
: data_allocator_(memory_resource)
|
||||||
, data_(init(circ_size)) {}
|
, data_(init(circ_size)) {}
|
||||||
|
|
||||||
|
template <typename MR, ::LIBPMR::verify_memory_resource<T> = true>
|
||||||
|
explicit queue(MR *memory_resource) noexcept
|
||||||
|
: queue(default_circle_buffer_size, memory_resource) {}
|
||||||
|
|
||||||
|
bool valid() const noexcept {
|
||||||
|
return data_ != nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
explicit operator bool() const noexcept {
|
||||||
|
return valid();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename U>
|
||||||
|
bool push(U &&value) noexcept {
|
||||||
|
if (!valid()) return false;
|
||||||
|
return data_->model_.enqueue(data_->elements(), data_->header_, context_, std::forward<U>(value));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool pop(value_type &value) noexcept {
|
||||||
|
if (!valid()) return false;
|
||||||
|
return data_->model_.dequeue(data_->elements(), data_->header_, context_, value);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
LIBCONCUR_NAMESPACE_END_
|
LIBCONCUR_NAMESPACE_END_
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user