+++ /dev/null
-#include "../../include/pthreadwrapper/mutex.h"\r
-#include <exception>\r
-\r
-#ifndef _WIN32\r
- #include <sys/errno.h>\r
-#endif\r
-\r
-#ifdef XMEM\r
- #include <xmem.h>\r
-#endif\r
-\r
-namespace PThread\r
-{\r
-\r
-Mutex::Mutex()\r
-{\r
- pthread_mutexattr_init(&m_attr);\r
- pthread_mutexattr_settype(&m_attr,PTHREAD_MUTEX_ERRORCHECK);\r
- pthread_mutex_init(&m_mutex,&m_attr);\r
-}\r
-\r
-Mutex::~Mutex()\r
-{\r
- pthread_mutex_destroy(&m_mutex);\r
- pthread_mutexattr_destroy(&m_attr);\r
-}\r
-\r
-void Mutex::Acquire() throw(std::exception)\r
-{\r
- int rval=0;\r
- if((rval=pthread_mutex_lock(&m_mutex))!=0)\r
- {\r
- // deadlock - throw exception\r
- if(rval==EDEADLK)\r
- {\r
- throw DeadlockException();\r
- }\r
- }\r
-}\r
-\r
-void Mutex::Release()\r
-{\r
- pthread_mutex_unlock(&m_mutex);\r
-}\r
-\r
-} // namespace\r