memory_order_relaxed
*ret = atomic_fetch_add_explicit(&refcnt->val, 1, memory_order_relaxed) + 1;
#define tsan_load(ptr) atomic_load_explicit((ptr), memory_order_relaxed)
#define tsan_store(ptr, val) atomic_store_explicit((ptr), (val), memory_order_relaxed)
#define tsan_add(ptr, n) atomic_fetch_add_explicit((ptr), (n), memory_order_relaxed)
atomic_fetch_add_explicit(&ask[i], 1, memory_order_relaxed);
atomic_fetch_add_explicit(&got[i], 1, memory_order_relaxed);
memory_order_relaxed);
while (atomic_load_explicit(&finish, memory_order_relaxed) != 1)
atomic_store_explicit(&finish, 2, memory_order_relaxed);
atomic_store_explicit(&finish, 1, memory_order_relaxed);
while (atomic_load_explicit(&finish, memory_order_relaxed) != 2)
atomic_fetch_add_explicit(&sigs, 1, memory_order_relaxed);