atomic_load
atomic_load (원자적으로 읽기)
atomic 객체의 값을 원자적으로 읽어 반환하는 자유 함수예요. <atomic> 헤더, C++11부터.
출처: cppreference
본문
atomic_load는 obj가 가리키는 값을 읽어 반환해요.
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)
주의할 점은 order가 std::memory_order_release 또는 std::memory_order_acq_rel이면 동작이 미정의라는 거예요. 읽기(load) 연산이므로 해제 계열 순서는 의미가 없기 때문이에요.
std::atomic<int> counter{5};
int v = atomic_load(&counter); // 5
자유 함수 버전과 멤버 버전(counter.load())이 기능상 같고, 멤버 버전이 더 자주 쓰여요. 단순히 최신 값을 안전하게 읽을 때 사용해요.