#pragma once class LogicDriver; namespace DiosCtrlBox { class LogicDriverThreadLocker { public: LogicDriverThreadLocker(); ~LogicDriverThreadLocker(); public: static LogicDriverThreadLocker *Instance(); void Initialize(LogicDriver *logicDriver); DWORD Lock(); void UnLock(); private: static LogicDriverThreadLocker *m_Instance; LogicDriver *m_logicDriver; }; class AutoLockLogicDriverThread { public: AutoLockLogicDriverThread() { LogicDriverThreadLocker::Instance()->Lock(); } ~AutoLockLogicDriverThread() { LogicDriverThreadLocker::Instance()->UnLock(); } }; }