LogicDriverThreadLocker.h 646 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #pragma once
  2. class LogicDriver;
  3. namespace DIOS::Dev::Detail::MachineryECOM
  4. {
  5. class LogicDriverThreadLocker : public DiosLock
  6. {
  7. public:
  8. LogicDriverThreadLocker();
  9. ~LogicDriverThreadLocker();
  10. public:
  11. static LogicDriverThreadLocker *Instance();
  12. void Initialize(LogicDriver *logicDriver);
  13. DWORD Lock();
  14. void UnLock();
  15. private:
  16. static LogicDriverThreadLocker *m_Instance;
  17. mutex driver_Mutex;
  18. };
  19. class AutoLockLogicDriverThread
  20. {
  21. public:
  22. AutoLockLogicDriverThread()
  23. {
  24. LogicDriverThreadLocker::Instance()->Lock();
  25. }
  26. ~AutoLockLogicDriverThread()
  27. {
  28. LogicDriverThreadLocker::Instance()->UnLock();
  29. }
  30. };
  31. }