diff options
Diffstat (limited to 'cpp/src/IceUtil/RecMutex.cpp')
-rw-r--r-- | cpp/src/IceUtil/RecMutex.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/cpp/src/IceUtil/RecMutex.cpp b/cpp/src/IceUtil/RecMutex.cpp index d20486c3a34..a6e75363afe 100644 --- a/cpp/src/IceUtil/RecMutex.cpp +++ b/cpp/src/IceUtil/RecMutex.cpp @@ -91,7 +91,9 @@ IceUtil::RecMutex::RecMutex() : int rc; #if _POSIX_VERSION >= 199506L + pthread_mutexattr_t attr; + rc = pthread_mutexattr_init(&attr); if(rc != 0) { @@ -103,10 +105,15 @@ IceUtil::RecMutex::RecMutex() : { throw ThreadSyscallException(__FILE__, __LINE__); } + #elif defined(__linux__) + const pthread_mutexattr_t attr = { PTHREAD_MUTEX_RECURSIVE_NP }; + #else + const pthread_mutexattr_t attr = { PTHREAD_MUTEX_RECURSIVE }; + #endif rc = pthread_mutex_init(&_mutex, &attr); @@ -114,6 +121,16 @@ IceUtil::RecMutex::RecMutex() : { throw ThreadSyscallException(__FILE__, __LINE__); } + +#if _POSIX_VERSION >= 199506L + + rc = pthread_mutexattr_destroy(&attr); + if(rc != 0) + { + throw ThreadSyscallException(__FILE__, __LINE__); + } + +#endif } IceUtil::RecMutex::~RecMutex() |