dhmutex.cpp 782 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include "dhmutex.h"
  2. DHMutex::DHMutex()
  3. {
  4. #ifndef WIN32
  5. // pthread_attr_init( &attr );
  6. // pthread_attr_destroy( &attr );
  7. pthread_mutexattr_t attr;
  8. // attr.__mutexkind = PTHREAD_MUTEX_RECURSIVE_NP;
  9. pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
  10. pthread_mutex_init(&m_mutex, &attr);
  11. #else
  12. InitializeCriticalSection(&m_critclSection);
  13. #endif
  14. }
  15. DHMutex::~DHMutex()
  16. {
  17. #ifndef WIN32
  18. pthread_mutex_destroy(&m_mutex);
  19. #else
  20. DeleteCriticalSection(&m_critclSection);
  21. #endif
  22. }
  23. int DHMutex::Lock()
  24. {
  25. #ifdef WIN32
  26. EnterCriticalSection(&m_critclSection);
  27. return 0;
  28. #else
  29. return pthread_mutex_lock(&m_mutex);
  30. #endif
  31. }
  32. int DHMutex::UnLock()
  33. {
  34. #ifdef WIN32
  35. LeaveCriticalSection(&m_critclSection);
  36. return 0;
  37. #else
  38. return pthread_mutex_unlock(&m_mutex);
  39. #endif
  40. }