C++11

// <atomic> 
template< class T >
T atomic_exchange_explicit( std::atomic<T>* obj, T desr, 
                            std::memory_order order );
template< class T >
T atomic_exchange_explicit( volatile std::atomic<T>* obj, T desr, 
                            std::memory_order order );

用一个非原子(Non-atomic)参数原子替换(Atomically replace)指定原子对象的值,并返回该原子对象之前的值。