Clone of Akilla's ac2d @ https://github.com/deregtd/AC2D

cThread.cpp 971B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include "stdafx.h"
  2. #include "cThread.h"
  3. cLockable::cLockable()
  4. {
  5. InitializeCriticalSection(&m_csLock);
  6. m_bLocked = false;
  7. }
  8. cLockable::~cLockable()
  9. {
  10. DeleteCriticalSection(&m_csLock);
  11. }
  12. void cLockable::Lock()
  13. {
  14. EnterCriticalSection(&m_csLock);
  15. m_bLocked = true;
  16. }
  17. void cLockable::Unlock()
  18. {
  19. m_bLocked = false;
  20. LeaveCriticalSection(&m_csLock);
  21. }
  22. bool cLockable::GetLocked()
  23. {
  24. return m_bLocked;
  25. }
  26. cThread::cThread()
  27. {
  28. m_bQuit = false;
  29. m_bStopped = true;
  30. m_hThread = 0;
  31. }
  32. cThread::~cThread()
  33. {
  34. if (m_hThread)
  35. {
  36. MessageBox(NULL, "Thread still open upon destructor call.", "cThread::~cThread() Error", MB_ICONERROR);
  37. m_bQuit = true;
  38. }
  39. }
  40. void cThread::Start()
  41. {
  42. m_bStopped = false;
  43. m_hThread = CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE) ThreadProc, this, NULL, &m_dwThreadID);
  44. }
  45. void cThread::Stop()
  46. {
  47. m_bQuit = true;
  48. m_hThread = 0;
  49. }
  50. void cThread::SetStopped()
  51. {
  52. m_bStopped = true;
  53. }
  54. bool cThread::GetStopped()
  55. {
  56. return m_bStopped;
  57. }