2014-10-02 4 views
0

나는 두 개의 동적 연결된 라이브러리 (또는 공유 개체)간에 공유하는 일반 오래된 데이터로 구성된 struct 있습니다. (C++ 11로 컴파일).낮은 수준의 std :: atomic <부호없는 int>

데이터 멤버 중 하나가 원자 유형이어야하며, 더 정확하게는 접두어 ++--을 기본적으로 적용 할 수 있어야합니다.

나는 두 라이브러리가 동일한 STL 구현을 사용하도록 묶어 둘 것이라고 생각하므로 회원에게 std::atomic<unsigned int>을 사용하는 데 관심이 있습니다.

그래서 저는 std::uint32_t을 멤버로 사용하고 라이브러리 내의 해당 멤버에 원자 적 연산을 적용하려고합니다. 퍼포먼스를 용납 할 수없는 수준으로 떨어 뜨리는 뮤텍스를 사용하는 것 이외에는 어떻게 할 지 모르겠습니다. 요약

는 어떻게 표준 C++ (11)에 의해 사용 가능한 기능을 사용하여

std::int32_t foo; 
atomic_increment(foo); 

같은 일을 할 수 있습니까?

+3

C++ 표준에 의존 할 수없고 C++ 표준에 대한 대답을 원할 때 뭔가를 해결하는 방법이 문제입니다. 그건 말이되지 않습니다. –

+0

std :: atomic을 사용하는 공유 라이브러리에서 이것을 구현하지 않고 stl-independent 인터페이스를 내 보내주는 것은 어떨까요? – galinette

답변

1

수 없습니다. 표준 C++은 서로 다른 공유 라이브러리에서 서로 다른 라이브러리 구현 개념을 존중하지 않으므로 (후자의 개념이 없기 때문에) 상황이 존재하지 않는다고 생각하지 않습니다. 따라서이를 지원할 시설이 없습니다.

실질적으로을 사용하십시오. 실제로 원자를 지원하는 플랫폼의 모든 알맞은 컴파일러/라이브러리는 시스템 코드에서 추적 할 수 없습니다.

관련 문제