# std::atomic<T>::exchange

< cpp‎ | atomic‎ | atomic

|  | (C++11 起)
T exchange( T desired, std::memory_order order = std::memory_order_seq_cst ) noexcept; |  |
T exchange( T desired, std::memory_order order = std::memory_order_seq_cst ) volatile noexcept; |  |

原子地以 `desired` 替换底层值。操作为读-修改-写操作。根据 `order` 的值影响内存。

若 std::atomic<T>::is_always_lock_free 为 false 则 volatile 限定版本被弃用。 | (C++20 起)

### 参数

desired | - | 要赋值的值
order | - | 要强加的内存顺序制约

### 返回值

调用前原子对象的值。

### 参阅

atomic_exchange atomic_exchange_explicit (C++11)(C++11) | 原子地以非原子实参的值替换原子对象的值，并返回该原子对象的旧值 (函数模板)