summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp')
-rw-r--r--cpp/include/Ice/MetricsObserverI.h5
-rw-r--r--cpp/src/Ice/Instance.cpp18
2 files changed, 9 insertions, 14 deletions
diff --git a/cpp/include/Ice/MetricsObserverI.h b/cpp/include/Ice/MetricsObserverI.h
index 8ae7afd5e93..6c7ea3c41ab 100644
--- a/cpp/include/Ice/MetricsObserverI.h
+++ b/cpp/include/Ice/MetricsObserverI.h
@@ -524,7 +524,6 @@ public:
virtual void update()
{
UpdaterPtr updater;
- bool enabled = false;
{
IceUtil::Mutex::Lock sync(*this);
if(!_metrics)
@@ -539,10 +538,10 @@ public:
_maps.push_back(IceUtil::Handle<IceInternal::MetricsMapT<MetricsType> >::dynamicCast(*p));
assert(_maps.back());
}
- enabled = !_maps.empty();
+ _enabled.exchange(_maps.empty() ? 0 : 1);
updater = _updater;
}
- _enabled.exchange(enabled ? 1 : 0);
+
if(updater)
{
updater->update();
diff --git a/cpp/src/Ice/Instance.cpp b/cpp/src/Ice/Instance.cpp
index 479deee7c52..a83e64ede65 100644
--- a/cpp/src/Ice/Instance.cpp
+++ b/cpp/src/Ice/Instance.cpp
@@ -225,17 +225,13 @@ private:
void
Timer::updateObserver(const Ice::Instrumentation::CommunicatorObserverPtr& obsv)
{
- bool hasObserver = false;
- {
- IceUtil::Mutex::Lock sync(_mutex);
- assert(obsv);
- _observer.attach(obsv->getThreadObserver("Communicator",
- "Ice.Timer",
- Ice::Instrumentation::ThreadStateIdle,
- _observer.get()));
- hasObserver = _observer.get();
- }
- _hasObserver.exchange(hasObserver ? 1 : 0);
+ IceUtil::Mutex::Lock sync(_mutex);
+ assert(obsv);
+ _observer.attach(obsv->getThreadObserver("Communicator",
+ "Ice.Timer",
+ Ice::Instrumentation::ThreadStateIdle,
+ _observer.get()));
+ _hasObserver.exchange(_observer.get());
}
void