LogicDriverThreadLocker.h 614 B

123456789101112131415161718192021222324252627282930313233343536
  1. #pragma once
  2. class LogicDriver;
  3. namespace DiosCtrlBox
  4. {
  5. class LogicDriverThreadLocker
  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. LogicDriver *m_logicDriver;
  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. }