std::experimental::atomic_shared_ptr<T>::exchange

From cppreference.com
Experimental
Technical Specification
Filesystem library (filesystem TS)
Library fundamentals (library fundamentals TS)
Library fundamentals 2 (library fundamentals TS v2)
Library fundamentals 3 (library fundamentals TS v3)
Extensions for parallelism (parallelism TS)
Extensions for parallelism 2 (parallelism TS v2)
Extensions for concurrency (concurrency TS)
Extensions for concurrency 2 (concurrency TS v2)
Concepts (concepts TS)
Ranges (ranges TS)
Reflection (reflection TS)
Mathematical special functions (special functions TR)
Experimental Non-TS
Pattern Matching
Linear Algebra
std::execution
Contracts
2D Graphics
shared_ptr<T> exchange( shared_ptr<T> desired, std::memory_order order = std::memory_order_seq_cst ) noexcept ;

Atomically replaces the underlying shared_ptr with desired. The operation is a read-modify-write operation. Memory is affected according to the value of order.

Parameters

desired - value to assign
order - memory order constraints to enforce

Return value

The value of the atomic variable before the call.

Remarks

All changes to the atomic_shared_ptr object itself, and all associated use_count increments, are guaranteed to be performed atomically. Associated use_count

See also

specializes atomic operations for std::shared_ptr
(function template)