fix compiling errors

This commit is contained in:
mutouyun 2018-12-11 20:52:15 +08:00
parent 0a17257388
commit 1b047bd975
3 changed files with 11 additions and 7 deletions

View File

@ -33,6 +33,10 @@ struct alignas(std::max_align_t) elem_array_head {
return cc_.load(std::memory_order_acquire);
}
u2_t cursor(void) const {
return wt_.load(std::memory_order_acquire);
}
auto acquire(void) {
while (lc_.exchange(1, std::memory_order_acquire)) {
std::this_thread::yield();
@ -62,6 +66,9 @@ public:
using base_t = elem_array_head<BaseIntSize>;
using head_t = elem_head;
using typename base_t::u1_t;
using typename base_t::u2_t;
enum : std::size_t {
head_size = elem_array_head_size<BaseIntSize>,
data_size = DataSize,
@ -95,6 +102,7 @@ public:
using base_t::connect;
using base_t::disconnect;
using base_t::conn_count;
using base_t::cursor;
void* acquire(void) {
elem_t* el = elem(base_t::acquire());
@ -116,12 +124,8 @@ public:
base_t::commit();
}
u2_t cursor(void) const {
return wt_.load(std::memory_order_acquire);
}
void* take(u2_t cursor) {
return elem(index_of(cursor))->data_;
return elem(base_t::index_of(cursor))->data_;
}
void put(void* ptr) {

View File

@ -19,7 +19,7 @@ public:
private:
array_t* elems_ = nullptr;
typename std::result_of<decltype(&array_t::cursor)(array_t)>::type cursor_ = 0;
typename array_t::u2_t cursor_ = 0;
bool connected_ = false;
public:

View File

@ -144,7 +144,7 @@ struct test_cq;
template <std::size_t D>
struct test_cq<ipc::circ::elem_array<D>> {
using ca_t = ipc::circ::elem_array<D>;
using cn_t = typename std::result_of<decltype(&ca_t::cursor)(ca_t)>::type;
using cn_t = typename ca_t::u2_t;
ca_t* ca_;