X-Git-Url: http://plrg.eecs.uci.edu/git/?p=c11tester.git;a=blobdiff_plain;f=test%2Frmw2prog.c;fp=test%2Frmw2prog.c;h=0d03b028d8d8432d160cf6724cd327294cff6e73;hp=0000000000000000000000000000000000000000;hb=d70f6f259c9850e5fceb527e3a9541c440c0146b;hpb=6152f84e7a7326643981e14884764f250fa13ea8 diff --git a/test/rmw2prog.c b/test/rmw2prog.c new file mode 100644 index 00000000..0d03b028 --- /dev/null +++ b/test/rmw2prog.c @@ -0,0 +1,37 @@ +#include +#include +#include + +#include "librace.h" + +atomic_int x; +atomic_int y; + +static void a(void *obj) +{ + int v1=atomic_fetch_add_explicit(&x, 1, memory_order_relaxed); + int v2=atomic_fetch_add_explicit(&y, 1, memory_order_relaxed); + printf("v1 = %d, v2=%d\n", v1, v2); +} + +static void b(void *obj) +{ + int v3=atomic_fetch_add_explicit(&y, 1, memory_order_relaxed); + int v4=atomic_fetch_add_explicit(&x, 1, memory_order_relaxed); + printf("v3 = %d, v4=%d\n", v3, v4); +} + +int user_main(int argc, char **argv) +{ + thrd_t t1, t2; + + atomic_init(&x, 0); + atomic_init(&y, 0); + thrd_create(&t1, (thrd_start_t)&a, NULL); + thrd_create(&t2, (thrd_start_t)&b, NULL); + + thrd_join(t1); + thrd_join(t2); + + return 0; +}