
Helge Bahmann's boost.atomic library is ACCEPTED.
Congratulations on the acceptance, and a few belated (sorry) comments: - Boost.Atomic should not use the smart_ptr spinlock pool; it should contain its own under boost/atomic. It could be a straight copy of the shared_ptr one. Boost.Atomic is lower level than shared_ptr and should not have an upward dependency, because a future shared_ptr may (and will) use Boost.Atomic in its spinlock implementation. - For the same reason, atomic_flag should be a proper fundamental component and not a wrapper over atomic_bool. atomic_flag is the building block for spinlocks; it should always be present and should always be lock-free. (And it should have ATOMIC_FLAG_INIT, because the spinlock pool needs it.) - The interlocked implementation seems suboptimal - it doesn't use InterlockedExchange and InterlockedExchangeAdd. (The spelling of atomic_signal_fence under MSVC version something and above is _ReadWriteBarrier - see boost/smart_ptr/detail/spinlock_w32.hpp). I apologize if these have already been discussed.