#pragma once class LogicDriver; namespace DIOS::Dev::Detail::MachineryECOM { class LogicDriverThreadLocker : public DiosLock { public: LogicDriverThreadLocker(); ~LogicDriverThreadLocker(); public: static LogicDriverThreadLocker *Instance(); void Initialize(LogicDriver *logicDriver); DWORD Lock(); void UnLock(); private: static LogicDriverThreadLocker *m_Instance; mutex driver_Mutex; }; class AutoLockLogicDriverThread { public: AutoLockLogicDriverThread() { LogicDriverThreadLocker::Instance()->Lock(); } ~AutoLockLogicDriverThread() { LogicDriverThreadLocker::Instance()->UnLock(); } }; }