dhmutex.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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_mutexattr_t attr;
  19. pthread_mutexattr_init(&attr);
  20. #ifdef LINUX
  21. // attr.__mutexkind = PTHREAD_MUTEX_RECURSIVE_NP;
  22. pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
  23. #endif
  24. int ret = pthread_mutex_init(&m_mutex, &attr);
  25. // printf("pthread_mutex_init=%d!\n", ret);
  26. pthread_mutexattr_destroy(&attr);
  27. #else
  28. InitializeCriticalSection(&m_critclSection);
  29. #endif
  30. }
  31. DHMutex::~DHMutex()
  32. {
  33. #ifndef WIN32
  34. pthread_mutex_destroy(&m_mutex);
  35. #else
  36. DeleteCriticalSection(&m_critclSection);
  37. #endif
  38. }
  39. int DHMutex::Lock()
  40. {
  41. #ifdef WIN32
  42. EnterCriticalSection(&m_critclSection);
  43. return 0;
  44. #else
  45. return pthread_mutex_lock(&m_mutex);
  46. #endif
  47. }
  48. int DHMutex::UnLock()
  49. {
  50. #ifdef WIN32
  51. LeaveCriticalSection(&m_critclSection);
  52. return 0;
  53. #else
  54. return pthread_mutex_unlock(&m_mutex);
  55. #endif
  56. }