应用临界区锁控制访问,并利用了模板参数,方便应用
template<typename T> class CJrParam { public: CJrParam(void) { ::InitializeCriticalSection(&m_CriticalSection); } virtual ~CJrParam(void) { ::DeleteCriticalSection(&m_CriticalSection); } protected: T m_ParamStruct; friend class CJrParamHelper; CRITICAL_SECTION m_CriticalSection; public: typedef T Param_Type; class CJrParamHelper { public: CJrParamHelper(CJrParam& param_) : m_ParamClass(param_) { ::EnterCriticalSection(&m_ParamClass.m_CriticalSection); } ~CJrParamHelper(void) { ::LeaveCriticalSection(&m_ParamClass.m_CriticalSection); } (Param_Type)& GetParamStruct() { return m_ParamClass.m_ParamStruct; }; private: CJrParam& m_ParamClass; }; }; struct StParam { int _test; StParam() { _test = 0; } }; class CMyParam : public CJrParam<StParam> { public: CMyParam (void); virtual ~CMyParam (void); }; void func() { CMyModule* _pM = GetMyModule(); CMyParam::CJrParamHelper _h(_pM->m_Params); StParam& datas = _h.GetParamStruct(); datas._test++; }