- while (true) {
- Data *prev = data.load(memory_order_relaxed);
- bool succ = data.compare_exchange_strong(prev, new_data,
- memory_order_release, memory_order_relaxed);
+ Data *prev = data.load(memory_order_relaxed);
+ bool succ = false;
+ do {
+ succ = data.compare_exchange_strong(prev, new_data,
+ memory_order_acq_rel, memory_order_relaxed);