4 #define release memory_order_release
5 #define acquire memory_order_acquire
6 #define acq_rel memory_order_acq_rel
7 #define relaxed memory_order_relaxed
13 node(unsigned int v) {
23 atomic_init(&top, NULL);
26 void push(unsigned int val) {
27 node *n = new node(val);
28 node *old = top.load(acquire);
31 } while (!top.compare_exchange_strong(old, n, acq_rel, relaxed));
35 node *old = top.load(acquire);
41 } while (!top.compare_exchange_strong(old, n, acq_rel, acquire));