function
<atomic>
std::atomic_exchange_explicit
template (1) | template <class T>T atomic_store_explicit (volatile atomic<T>* obj, T val, memory_order sync) noexcept;template <class T>T atomic_store_explicit (atomic<T>* obj, T val, memory_order sync) noexcept; |
---|
overloads (2) | T atomic_store_explicit (volatile A* obj, T val, memory_order sync) noexcept;T atomic_store_explicit (A* obj, T val, memory_order sync) noexcept; |
---|
Read and modify contained value (explicit memory order)
Replaces the value contained in obj with val and returns the value obj had immediately before.
The entire operation is atomic (an atomic read-modify-write operation): the value of obj is not affected by other threads between the instant its value is read (to be returned) and the moment it is modified by this function.
See atomic::exchange for the equivalent member function of atomic.
Parameters
- obj
- Pointer to an atomic object.
Type A represents other overloaded atomic types (if the library does not implement the C-style atomic types as instantiations of atomic).
- val
- Value to assign to the contained object.
T is the type of the value contained in the atomic object (atomic's template parameter).
- sync
- Synchronization mode for the operation.
This shall be a values of the enum
type memory_order.
Return value
The value contained in obj before the call.
T is the type of the contained value (atomic's template parameter).
Data races
No data races (atomic operation). Memory order specified by argument sync.
Exception safety
No-throw guarantee: never throws exceptions.