나는 원자 컨테이너에 몇 가지 문제를 겪고 있었고 this link을 보았습니다.C++ 11 std :: thread의 스레드 안전성 <T> 복사 생성자
std :: atomic이 복사 생성 가능하지 않은 이유가 있습니까? 솔루션은 this 인 것 같습니다. 원자로드 함수를 사용하여 비 원자 생성자에 T
값을 전달합니다 (실수하지 않은 경우).
일반적으로이 복사본 생성자는 안전합니까?
template<typename T>
struct MobileAtomic
{
std::atomic<T> atomic;
explicit MobileAtomic(std::atomic<T> const& a) : atomic(a.load()) {}
};
이 코드가 의미있는 것을 달성하는지 여부는 분명하지 않습니다. Atomics는 매우 구체적인 용도로 사용되며 일반적으로 복사하는 것이 적절하지 않습니다. –
유추 : 원자 int는 정수보다 뮤텍스 또는 세마포에 훨씬 가깝습니다. 세마포어의 현재 상태 (원자 적로드에 해당)를 질의 할 수는 있지만 세마포어 자체를 복사하는 것은 의미가 없습니다. 이것은 동기화 메커니즘이며 합리적인 것이 아니라면 복사본을 만듭니다. –
"생성자가 스레드로부터 안전하다는"의미는 무엇인지 분명하지 않습니다. 누가 공유 방식으로 무엇을 구성하고 있습니까? –