summaryrefslogtreecommitdiff
path: root/cpp/src/IceUtil/RWRecMutex.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceUtil/RWRecMutex.cpp')
-rw-r--r--cpp/src/IceUtil/RWRecMutex.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/cpp/src/IceUtil/RWRecMutex.cpp b/cpp/src/IceUtil/RWRecMutex.cpp
index d5ff0a6b2db..5a98ae9036d 100644
--- a/cpp/src/IceUtil/RWRecMutex.cpp
+++ b/cpp/src/IceUtil/RWRecMutex.cpp
@@ -16,7 +16,6 @@
#include <IceUtil/Exception.h>
#include <IceUtil/Time.h>
-#include <assert.h>
IceUtil::RWRecMutex::RWRecMutex() :
_count(0),
@@ -45,7 +44,7 @@ IceUtil::RWRecMutex::readlock() const
_count++;
}
-void
+bool
IceUtil::RWRecMutex::tryReadlock() const
{
Mutex::Lock lock(_mutex);
@@ -56,12 +55,13 @@ IceUtil::RWRecMutex::tryReadlock() const
//
if(_count < 0 || _waitingWriters != 0)
{
- throw ThreadLockedException(__FILE__, __LINE__);
+ return false;
}
_count++;
+ return true;
}
-void
+bool
IceUtil::RWRecMutex::timedTryReadlock(const Time& timeout) const
{
Mutex::Lock lock(_mutex);
@@ -80,11 +80,12 @@ IceUtil::RWRecMutex::timedTryReadlock(const Time& timeout) const
}
else
{
- throw ThreadLockedException(__FILE__, __LINE__);
+ return false;
}
}
_count++;
+ return true;
}
void
@@ -128,7 +129,7 @@ IceUtil::RWRecMutex::writelock() const
_writerId = ThreadControl().id();
}
-void
+bool
IceUtil::RWRecMutex::tryWritelock() const
{
Mutex::Lock lock(_mutex);
@@ -140,7 +141,7 @@ IceUtil::RWRecMutex::tryWritelock() const
if(_count < 0 && _writerId == ThreadControl().id())
{
--_count;
- return;
+ return true;
}
//
@@ -148,7 +149,7 @@ IceUtil::RWRecMutex::tryWritelock() const
//
if(_count != 0)
{
- throw ThreadLockedException(__FILE__, __LINE__);
+ return false;
}
//
@@ -156,9 +157,10 @@ IceUtil::RWRecMutex::tryWritelock() const
//
_count = -1;
_writerId = ThreadControl().id();
+ return true;
}
-void
+bool
IceUtil::RWRecMutex::timedTryWritelock(const Time& timeout) const
{
Mutex::Lock lock(_mutex);
@@ -169,7 +171,7 @@ IceUtil::RWRecMutex::timedTryWritelock(const Time& timeout) const
if(_count < 0 && _writerId == ThreadControl().id())
{
--_count;
- return;
+ return true;
}
//
@@ -196,7 +198,7 @@ IceUtil::RWRecMutex::timedTryWritelock(const Time& timeout) const
}
else
{
- throw ThreadLockedException(__FILE__, __LINE__);
+ return false;
}
}
@@ -205,6 +207,7 @@ IceUtil::RWRecMutex::timedTryWritelock(const Time& timeout) const
//
_count = -1;
_writerId = ThreadControl().id();
+ return true;
}
void