Improve my take on atomic, and add AtomicExchangeAcquire. Use something that works with all used versions of clang/g++ rather than falling back to the hack for old versions of clang.