atomic_atomic_exchange

atomic_atomic_exchange (저장 후 이전 값 반환)

std::atomic_exchange는 원자적 객체의 현재 값을 원하는 값으로 바꾸고, 이전 값을 반환해요.

출처: cppreference

본문

std::atomic_exchangestd::atomic_exchange_explicit<atomic> 헤더에 정의된 자유 함수예요.

template< class T >
T atomic_exchange( std::atomic<T>* obj,
                   typename std::atomic<T>::value_type desired ) noexcept;

template< class T >
T atomic_exchange_explicit( std::atomic<T>* obj,
                            typename std::atomic<T>::value_type desired,
                            std::memory_order order ) noexcept;

**atomic_exchange**는 obj->exchange(desired)처럼 동작해요. **atomic_exchange_explicit**는 obj->exchange(desired, order)처럼 동작해요. 객체의 값을 원자적으로 desired로 바꾸고 이전 값을 반환해요.

반환값 (Return value)

교환 전의 객체 값이에요.

예제 (Example)

#include <atomic>
#include <iostream>

std::atomic<int> a{10};
int main()
{
    int old = std::atomic_exchange(&a, 20);
    std::cout << old << '\n';      // 10
    std::cout << a.load() << '\n'; // 20
}

더 알아보기 (Learn more)

cppreference