#if 0 #include #include _Bool atomic_compare_exchange_weak_explicit(volatile __TYPE *object, __BASE *expected, __BASE desired, memory_order failure) { switch (failure) { case memory_order_release: case memory_order_acq_rel: abort(); break; default: break; } if (memcmp(object, expected, sizeof(*object)) == 0) { memcpy(object, &desired, sizeof(*object)); return true; } memcpy(expected, object, sizeof(*object)); return false; } #endif