싱글 톤 소프트웨어 디자인 패턴을 사용하는 상태 엔진이 있습니다. 상태 엔진은 여러 스레드로 액세스 할 수 있습니다. 객체는 프로그램 시작시 주 스레드에서 초기화되며 지연 초기화를 위해 설계되지 않았습니다.휘발성 싱글 톤 멤버?
는class CStateEngine final
{
private:
/* Contains the Singleton object */
static CStateEngine* instance;
protected:
CStateEngine();
public:
static CStateEngine* Instance() volatile; // Returns the Singleton instance
static void DeleteInstance() volatile; // Deletes the Singleton instance
}
'volatile'은 멀티 스레딩을위한 것이 아닙니다. 멤버들을 '휘발성 (volatile)'이라고 표시하면 무엇이 당신에게 줄 것이라고 생각하니? –
@ R.MartinhoFernandes Fencing? 클래스 멤버 내부에서 다른 곳에 잠금을 구현했습니다. 참조 : [link] (http://www.drdobbs.com/cpp/volatile-the-multithreaded-programmers-b/184403766) –
싱글 톤은 멀티 스레드 환경에서 사용하기위한 것이 아닙니다. 키워드를 추가한다고해서 여기에 도움이되지는 않습니다. 당신은'std :: atomic'과 같은 것이 필요할 것입니다; '휘발성 (volatile) '은 완전히 다른 것을합니다 –