std::atomic
보면 그것은 기본 전문 내가 읽을 수있다 :std :: atomic 내장 형식 - 비 잠금 장치 대 사소한 소멸자?
이 전문 표준 레이아웃을 가지고 사소한 기본 생성자 및 사소한 소멸자.
는 또한 is_lock_free
에 대한 읽기 : std::atomic_flag
제외
모든 원자 유형은 뮤텍스 또는 다른 잠금 작업을 사용하는 대신 잠금이없는 원자 CPU 명령어를 사용하여 구현 될 수있다. 원자 유형도 가끔 허용 될 수 있습니다. lock-free. 정렬 된 메모리 액세스 만 주어진 아키텍처에서 원자 번호가 인 경우 동일한 유형의 정렬되지 않은 객체는 잠금을 사용해야합니다.
지금 여기에 내가하지 않는 캐치 :
어떻게 표준 적 뮤텍스의 모든 종류의 사용할 사소한 ctor에/dtor 규정 어떤 atomic
유형 - 내가 온 모든 뮤텍스 가로 질러야 함 비 사소한 초기화.
이 다음 질문에 리드 :
- 하는 주요 플랫폼은 개체 당 "initalization 무료"입니다 (뮤텍스 같은) 어떤 잠금 동작을 제공 마십시오.
std::atomic
특수화가 잠긴 상태가 아니며 (여전히 평범한 ctor/dtor 요구 사항을 충족 함) 알려진 구현이 있습니까?- 여기에 뭔가 혼동하는 것이 있습니까? :-)
심지어 가장 간단한 스핀 록 (atomic_flag
참조)도 간단한 구현이 필요하므로 어떻게 구현할 수 있는지 알 수 없습니다.
면책 조항 : 분명히 학문적 관심사에서 벗어나이 문서를 읽는 동안 나에게 뛰어 들었습니다.
하! 네, 이것이 표준 요구 사항을 충족시키는 것 같습니다. 비록 대부분의 실제 사용 사례에 대해 다소 정신 나간 것 같습니다! –
예, 제정신이 아닙니다. 그러나 사람들은 미친 아키텍처에서 작동하는 C++ 코드를 작성하려고하며 표준 작성자는이를 기꺼이 요구합니다. –
Wrt. 편집 : 코드는 (정적) 객체를 값으로 설정하므로 * 사소한 * 초기화가 아닙니다. (?) 물론, 이것을 사용하는 객체는 아무 것도 할 필요가 없으므로 사소한 ctor를 가질 수 있습니다. –