summaryrefslogtreecommitdiff
path: root/cpp/src/IceUtil/StaticMutex.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceUtil/StaticMutex.cpp')
-rw-r--r--cpp/src/IceUtil/StaticMutex.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/cpp/src/IceUtil/StaticMutex.cpp b/cpp/src/IceUtil/StaticMutex.cpp
index 33e764e20b6..8fef1f9e3b5 100644
--- a/cpp/src/IceUtil/StaticMutex.cpp
+++ b/cpp/src/IceUtil/StaticMutex.cpp
@@ -31,9 +31,11 @@ typedef list<HANDLE> MutexList;
static MutexList* _mutexList;
+//
// Although apparently not documented by Microsoft, static objects are
// initialized before DllMain/DLL_PROCESS_ATTACH and finalized after
// DllMain/DLL_PROCESS_DETACH ... that's why we use a static object.
+//
namespace IceUtil
{
@@ -48,7 +50,6 @@ public:
static Init _init;
-
Init::Init()
{
InitializeCriticalSection(&_criticalSection);
@@ -74,10 +75,12 @@ Init::~Init()
}
}
+//
// For full thread-safety, we assume that _mutexInitialized cannot be seen as true
// before CRITICAL_SECTION has been updated. This is true on x86. Does IA64
// provide the same memory ordering guarantees?
//
+
void IceUtil::StaticMutex::initialize() const
{
EnterCriticalSection(&_criticalSection);
@@ -104,4 +107,3 @@ void IceUtil::StaticMutex::initialize() const
#endif
IceUtil::StaticMutex IceUtil::globalMutex = ICE_STATIC_MUTEX_INITIALIZER;
-