atomic_init

atomic_init (atomic 객체 값 초기화)

기본 생성된 atomic 객체를 원하는 값으로 초기화하는 함수예요. C 호환용으로 제공되며 C++20부터 폐기(deprecated)됐어요. <atomic> 헤더, C++11부터.

출처: cppreference

본문

atomic_init은 기본 생성된 atomic 객체 obj를 값 desired로 초기화해요.

template< class T >
void atomic_init
    ( std::atomic<T>* obj,
      typename std::atomic<T>::value_type desired ) noexcept;   // (1) deprecated in C++20

중요한 특징은 이 함수가 원자적이지 않다는 거예요. 다른 스레드가 atomic 연산을 통해서라도 동시에 접근하면 데이터 경쟁이 돼요.

또한 obj가 기본 생성된 객체가 아니거나, 같은 obj에 이 함수를 두 번 호출하면 동작이 미정의예요.

  • 매개변수 obj: 초기화할 atomic 객체 포인터.
  • 매개변수 desired: atomic 객체를 초기화할 값.
  • 반환 값: 없음.

이 함수는 C와의 호환을 위해 제공돼요. 호환이 필요 없다면 atomic_init을 피하고, 초기화는 생성자(std::atomic<T> a{value})로 하는 게 권장돼요. 생성자 기반이 훨씬 안전하고 C++20부터 이 함수는 폐기 예정이기 때문이에요.

더 알아보기 (Learn more)

cppreference