2014-04-10 2 views
0

내 대상 시스템에 C++ 0x (C++ 11은 지원하지 않음)를 지원하는 g ++ 4.6.3이 있습니다. atomic_int를 사용하여 두 스레드간에 액세스하는 상태 변수를 저장합니다. 그러나이 유형에 대해 정의 된 같지 않음 연산자가없는 것 같습니다. atomic_ints를 어떻게 비교합니까?C++ atomic_ints를 비교하는 방법?

답변

0

atomic_int의 변환 연산자 때문에 직접 비교할 수 있어야합니다. 그것이 작동하지 않는다면, 컴파일러에 특정한 해결 방법을 찾아야 만합니다.

static_cast<int>(a) == static_cast<int>(b) 

a.load() == b.load() 

atomic_load(&a) == atomic_load(&b) 

당신이 어떤 종류의 비교 원자 아님을주의해야한다, 그래서 당신이하지 않은합니다 명시 적으로 캐스팅하거나 load() 멤버 함수 또는 atomic_load() 비 멤버 함수를 사용 아마도 경우 작동합니다 이 비교로해서는 안되는 일을하려고 노력합니다.