atomic_load

atomic_load (원자적으로 읽기)

atomic 객체의 값을 원자적으로 읽어 반환하는 자유 함수예요. <atomic> 헤더, C++11부터.

출처: cppreference

본문

atomic_loadobj가 가리키는 값을 읽어 반환해요.

template< class T >
T atomic_load( const std::atomic<T>* obj ) noexcept;   // (1)

template< class T >
T atomic_load( const volatile std::atomic<T>* obj ) noexcept;  // (2)

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

template< class T >
T atomic_load_explicit( const std::atomic<T>* obj,
                        std::memory_order order ) noexcept;   // (3)

주의할 점은 orderstd::memory_order_release 또는 std::memory_order_acq_rel이면 동작이 미정의라는 거예요. 읽기(load) 연산이므로 해제 계열 순서는 의미가 없기 때문이에요.

std::atomic<int> counter{5};
int v = atomic_load(&counter);   // 5

자유 함수 버전과 멤버 버전(counter.load())이 기능상 같고, 멤버 버전이 더 자주 쓰여요. 단순히 최신 값을 안전하게 읽을 때 사용해요.

더 알아보기 (Learn more)

cppreference