diff options
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/include/Ice/MetricsObserverI.h | 5 | ||||
-rw-r--r-- | cpp/src/Ice/Instance.cpp | 18 |
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 |