내 문제는 다음과 같습니다.휘발성 정적 멤버 초기화가 왜 재정의 컴파일 오류를 생성합니까?
정적 카운터가있는 클래스가 있습니다. 이 변수를 멀티 스레드 환경에서 사용하기 때문에이 카운터를 휘발성으로 설정했습니다. CPP 파일에서
class.h
class myClass
{
public:
volatile static int mCounter;
(...)
};
class.cpp
int myclass::mCounter = 0;
, 나는 그것을 초기화, 나는 다음과 같은 컴파일 오류 얻을 :
'mCounter' : redefinition; different type modifiers
왜?
미리 감사드립니다.
'휘발성'은 동시성과 관련하여 ** 아무 것도 ** 없습니다. 프로그램이 잘못되었을 가능성이 큽니다. –
각 프로세서마다 전용 캐시가 있습니다. 휘발성 워드는 값이 메모리에서 읽히고 이러한 캐시 중 하나가 읽히지 않도록 보장합니까? –
해결하려는 실제 문제는 무엇입니까? 둘 이상의 스레드가'mCounter'를 업데이트합니까? 그렇다면 '휘발성'이상이 필요합니다. –