- C 11 compare and swap acquire/release semantics
- std::atomic<K *> data;
- K *old_value = NULL;
- K *new_value = new K();
- if (!data.compare_exchange_strong(old_value, new_value, m1, m2)) {
- delete new_value;
- }
- do_something(old_value);
- std::atomic<K *> data;
- K *i = data.load(m3);
- K *j;
- do {
- j = i + 1;
- } while (data.compare_exchange_weak(i, j, m4, m5);
- do_something(j);