aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDeterminant <ted.sybil@gmail.com>2019-10-13 18:56:33 -0400
committerDeterminant <ted.sybil@gmail.com>2019-10-13 18:56:33 -0400
commitc230c6d92e8bff8a3f401b3b538d08962180d0c2 (patch)
treefa118dba9a4dd1869ab6c098557ba1ff8eb3b96c
parent8f76e5d8823b684d91e19f8efebe5579e00c8c48 (diff)
drop the use of alignas
-rw-r--r--include/salticidae/queue.h13
1 files changed, 8 insertions, 5 deletions
diff --git a/include/salticidae/queue.h b/include/salticidae/queue.h
index 9fd11f1..899a082 100644
--- a/include/salticidae/queue.h
+++ b/include/salticidae/queue.h
@@ -9,6 +9,7 @@
namespace salticidae {
static size_t const cacheline_size = 64;
+using cacheline_pad = uint8_t[cacheline_size];
class FreeList {
public:
@@ -21,7 +22,7 @@ class FreeList {
};
private:
- alignas(cacheline_size) std::atomic<Node *> top;
+ std::atomic<Node *> top;
public:
FreeList(): top(nullptr) {}
@@ -92,8 +93,9 @@ template<typename T>
class MPMCQueue {
protected:
struct Block: public FreeList::Node {
- alignas(cacheline_size) std::atomic<uint32_t> head;
- alignas(cacheline_size) std::atomic<uint32_t> tail;
+ std::atomic<uint32_t> head;
+ cacheline_pad _pad0;
+ std::atomic<uint32_t> tail;
T elem[MPMCQ_SIZE];
std::atomic<bool> avail[MPMCQ_SIZE];
std::atomic<Block *> next;
@@ -101,8 +103,9 @@ class MPMCQueue {
FreeList blks;
- alignas(cacheline_size) std::atomic<Block *> head;
- alignas(cacheline_size) std::atomic<Block *> tail;
+ std::atomic<Block *> head;
+ cacheline_pad _pad0;
+ std::atomic<Block *> tail;
template<typename U>
bool _enqueue(U &&e, bool unbounded = true) {