use compare_exchange_strong