나는 두 개의 동적 연결된 라이브러리 (또는 공유 개체)간에 공유하는 일반 오래된 데이터로 구성된 struct
있습니다. (C++ 11로 컴파일).낮은 수준의 std :: atomic <부호없는 int>
데이터 멤버 중 하나가 원자 유형이어야하며, 더 정확하게는 접두어 ++
및 --
을 기본적으로 적용 할 수 있어야합니다.
나는 두 라이브러리가 동일한 STL 구현을 사용하도록 묶어 둘 것이라고 생각하므로 회원에게 std::atomic<unsigned int>
을 사용하는 데 관심이 있습니다.
그래서 저는 std::uint32_t
을 멤버로 사용하고 라이브러리 내의 해당 멤버에 원자 적 연산을 적용하려고합니다. 퍼포먼스를 용납 할 수없는 수준으로 떨어 뜨리는 뮤텍스를 사용하는 것 이외에는 어떻게 할 지 모르겠습니다. 요약
는 어떻게 표준 C++ (11)에 의해 사용 가능한 기능을 사용하여
std::int32_t foo;
atomic_increment(foo);
같은 일을 할 수 있습니까?
C++ 표준에 의존 할 수없고 C++ 표준에 대한 대답을 원할 때 뭔가를 해결하는 방법이 문제입니다. 그건 말이되지 않습니다. –
std :: atomic을 사용하는 공유 라이브러리에서 이것을 구현하지 않고 stl-independent 인터페이스를 내 보내주는 것은 어떨까요? – galinette