应用临界区锁控制访问,并利用了模板参数,方便应用
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++;
}