6 #define release memory_order_release
7 #define acquire memory_order_acquire
8 #define acq_rel memory_order_acq_rel
9 #define relaxed memory_order_relaxed
15 node(unsigned int v) {
25 atomic_init(&top, NULL);
28 void push(unsigned int val) {
29 node *n = new node(val);
30 node *old = top.load(wildcard(1)); // acquire
33 } while (!top.compare_exchange_strong(old, n, wildcard(2), wildcard(3)));
38 node *old = top.load(wildcard(4)); // acquire
44 } while (!top.compare_exchange_strong(old, n, wildcard(5), wildcard(6)));