7 #define acquire memory_order_acquire
8 #define release memory_order_release
9 #define relaxed memory_order_relaxed
13 index.store(idx, relaxed);
14 next.store(0, relaxed);
25 head = tail = new node(-1);
27 void enqueue(int idx) {
28 node* n = new node(idx);
29 tail->next.store(n, release);
32 bool dequeue(int *idx) {
34 node *n = tmp->next.load(acquire);
35 if (NULL == n) return false;
37 *idx = n->index.load(relaxed);