atomic_store

atomic_store (원자적으로 쓰기)

atomic 객체에 값을 원자적으로 저장하는 자유 함수예요. <atomic> 헤더, C++11부터.

출처: cppreference

본문

atomic_storeobj가 가리키는 값을 desired로 원자적으로 교체해요.

template< class T >
void atomic_store( std::atomic<T>* obj,
                   typename std::atomic<T>::value_type desired ) noexcept;   // (1)

기본 버전은 obj->store(desired)처럼 동작해요. _explicit 버전은 메모리 순서를 직접 지정해요.

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

주의할 점은 _explicit에서 orderstd::memory_order_consume, std::memory_order_acquire, std::memory_order_acq_rel 중 하나이면 동작이 미정의라는 거예요. 저장(store) 연산은 해제 계열 순서와만 의미가 있기 때문이에요.

std::atomic<int> counter;
atomic_store(&counter, 42);

자유 함수 버전과 멤버 버전(counter.store(42))이 기능상 같고, 멤버 버전이 더 자주 쓰여요. 데이터를 안전하게 "게시"하는 가장 기본적인 쓰기 연산이에요.

더 알아보기 (Learn more)

cppreference