8 next.store(0, memory_order_relaxed);
16 atomic<node*> head, tail;
19 head = tail = new node(0);
22 void enqueue(int val) {
23 node* n = new node(val);
24 node *h = head.load(memory_order_relaxed);
25 h->next.store(n, memory_order_release);
26 head.store(n, memory_order_relaxed);
29 bool dequeue(int *v) {
30 node* t = tail.load(memory_order_relaxed);
31 node* n = t->next.load(memory_order_acquire);
35 tail.store(n, memory_order_relaxed);