atomic_store
atomic_store (원자적으로 쓰기)
atomic 객체에 값을 원자적으로 저장하는 자유 함수예요. <atomic> 헤더, C++11부터.
출처: cppreference
본문
atomic_store는 obj가 가리키는 값을 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에서 order가 std::memory_order_consume, std::memory_order_acquire, std::memory_order_acq_rel 중 하나이면 동작이 미정의라는 거예요. 저장(store) 연산은 해제 계열 순서와만 의미가 있기 때문이에요.
std::atomic<int> counter;
atomic_store(&counter, 42);
자유 함수 버전과 멤버 버전(counter.store(42))이 기능상 같고, 멤버 버전이 더 자주 쓰여요. 데이터를 안전하게 "게시"하는 가장 기본적인 쓰기 연산이에요.