diff options
Diffstat (limited to 'cpp/test/IceStorm/stress/Subscriber.cpp')
-rw-r--r-- | cpp/test/IceStorm/stress/Subscriber.cpp | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/cpp/test/IceStorm/stress/Subscriber.cpp b/cpp/test/IceStorm/stress/Subscriber.cpp index 99fe7e2a844..6424a5fd0bf 100644 --- a/cpp/test/IceStorm/stress/Subscriber.cpp +++ b/cpp/test/IceStorm/stress/Subscriber.cpp @@ -15,7 +15,8 @@ #include <IceUtil/Time.h> #include <IceUtil/Random.h> #include <Event.h> - +#include <IceUtil/Mutex.h> +#include <IceUtil/MutexPtrLock.h> #include <TestCommon.h> using namespace std; @@ -130,7 +131,7 @@ public: ErraticEventI(const CommunicatorPtr& communicator, int total) : EventI(communicator, total), _done(false) { - IceUtil::StaticMutex::Lock sync(_remainingMutex); + IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(_remainingMutex); ++_remaining; } @@ -149,7 +150,7 @@ public: current.adapter->deactivate(); _count = _total; { - IceUtil::StaticMutex::Lock sync(_remainingMutex); + IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(_remainingMutex); --_remaining; if(_remaining == 0) { @@ -159,16 +160,40 @@ public: } } + static IceUtil::Mutex* _remainingMutex; + private: - static IceUtil::StaticMutex _remainingMutex; static int _remaining; bool _done; }; -IceUtil::StaticMutex ErraticEventI::_remainingMutex = ICE_STATIC_MUTEX_INITIALIZER; +IceUtil::Mutex* ErraticEventI::_remainingMutex = 0; int ErraticEventI::_remaining = 0; +namespace +{ + +class Init +{ +public: + + Init() + { + ErraticEventI::_remainingMutex = new IceUtil::Mutex; + } + + ~Init() + { + delete ErraticEventI::_remainingMutex; + ErraticEventI::_remainingMutex = 0; + } +}; + +Init init; + +} + struct Subscription { Ice::ObjectAdapterPtr adapter; |