summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/management/ManagementObject.cpp
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2008-06-30 19:00:49 +0000
committerTed Ross <tross@apache.org>2008-06-30 19:00:49 +0000
commit5a848a6a699d5ab8de93a646a44614378e56871f (patch)
treee2a15b5ad2dd1a30e206601dc8f6902ea875f2e7 /cpp/src/qpid/management/ManagementObject.cpp
parent258cccda74ffaa478366bfacda07e61bd88b20ec (diff)
downloadqpid-python-5a848a6a699d5ab8de93a646a44614378e56871f.tar.gz
QPID-1160 - Per-thread counters in management API to avoid locking
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@672864 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/management/ManagementObject.cpp')
-rw-r--r--cpp/src/qpid/management/ManagementObject.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/cpp/src/qpid/management/ManagementObject.cpp b/cpp/src/qpid/management/ManagementObject.cpp
index 68d7e5c886..2528ed4284 100644
--- a/cpp/src/qpid/management/ManagementObject.cpp
+++ b/cpp/src/qpid/management/ManagementObject.cpp
@@ -21,12 +21,15 @@
#include "Manageable.h"
#include "ManagementObject.h"
+#include "ManagementAgent.h"
#include "qpid/framing/FieldTable.h"
using namespace qpid::framing;
using namespace qpid::management;
using namespace qpid::sys;
+int ManagementObject::nextThreadIndex = 0;
+
void ManagementObject::writeTimestamps (Buffer& buf)
{
buf.putShortString (getPackageName ());
@@ -40,3 +43,14 @@ void ManagementObject::writeTimestamps (Buffer& buf)
void ManagementObject::setReference(uint64_t) {}
+int ManagementObject::getThreadIndex() {
+ static __thread int thisIndex = -1;
+ if (thisIndex == -1) {
+ sys::Mutex::ScopedLock mutex(accessLock);
+ thisIndex = nextThreadIndex;
+ if (nextThreadIndex < agent->getMaxThreads() - 1)
+ nextThreadIndex++;
+ }
+ return thisIndex;
+}
+