For manual inspection of these tests, one might want to change the
memory-ordering for the loads/stores.
Note that this changes the default to use relaxed.
static int N = 2;
-std::atomic_int *x;
+/* Can be tested for different behavior with relaxed vs. release/acquire/seq-cst */
+#define load_mo std::memory_order_relaxed
+#define store_mo std::memory_order_relaxed
+
+static std::atomic_int *x;
static void a(void *obj)
{
int idx = *((int *)obj);
if (idx > 0)
- x[idx - 1].load(std::memory_order_relaxed);
+ x[idx - 1].load(load_mo);
if (idx < N)
- x[idx].store(1, std::memory_order_relaxed);
+ x[idx].store(1, store_mo);
else
- x[0].load(std::memory_order_relaxed);
+ x[0].load(load_mo);
}
int user_main(int argc, char **argv)