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부터 이 함수는 폐기 예정이기 때문이에요.