C++ Memory Model and Atomics

std::atomic

Memory Orderings

  • memory_order_relaxed
  • memory_order_acquire / memory_order_release
  • memory_order_acq_rel
  • memory_order_seq_cst

Spinlock

  • acquire/release atomics
  • why seq_cst is over-specified here

ABA Problem

  • tagged pointers as fix

ASAN / UBSAN

  • -fsanitize=address,undefined