summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/SliceChecksums.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/SliceChecksums.cpp')
-rw-r--r--cpp/src/Ice/SliceChecksums.cpp32
1 files changed, 28 insertions, 4 deletions
diff --git a/cpp/src/Ice/SliceChecksums.cpp b/cpp/src/Ice/SliceChecksums.cpp
index 77323ad2bcf..5e5b9f5fd73 100644
--- a/cpp/src/Ice/SliceChecksums.cpp
+++ b/cpp/src/Ice/SliceChecksums.cpp
@@ -8,13 +8,37 @@
// **********************************************************************
#include <Ice/SliceChecksums.h>
-#include <IceUtil/StaticMutex.h>
+#include <IceUtil/Mutex.h>
+#include <IceUtil/MutexPtrLock.h>
using namespace std;
using namespace Ice;
static SliceChecksumDict* _sliceChecksums = 0;
-static IceUtil::StaticMutex _mutex = ICE_STATIC_MUTEX_INITIALIZER;
+namespace
+{
+
+IceUtil::Mutex* _mutex = 0;
+
+class Init
+{
+public:
+
+ Init()
+ {
+ _mutex = new IceUtil::Mutex;
+ }
+
+ ~Init()
+ {
+ delete _mutex;
+ _mutex = 0;
+ }
+};
+
+Init init;
+
+}
class SliceChecksumDictDestroyer
{
@@ -31,7 +55,7 @@ static SliceChecksumDictDestroyer destroyer;
SliceChecksumDict
Ice::sliceChecksums()
{
- IceUtil::StaticMutex::Lock lock(_mutex);
+ IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(_mutex);
if(_sliceChecksums == 0)
{
_sliceChecksums = new SliceChecksumDict();
@@ -41,7 +65,7 @@ Ice::sliceChecksums()
IceInternal::SliceChecksumInit::SliceChecksumInit(const char* checksums[])
{
- IceUtil::StaticMutex::Lock lock(_mutex);
+ IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(_mutex);
if(_sliceChecksums == 0)
{
_sliceChecksums = new SliceChecksumDict();