diff options
author | Ted Ross <tross@apache.org> | 2008-06-30 19:00:49 +0000 |
---|---|---|
committer | Ted Ross <tross@apache.org> | 2008-06-30 19:00:49 +0000 |
commit | 5a848a6a699d5ab8de93a646a44614378e56871f (patch) | |
tree | e2a15b5ad2dd1a30e206601dc8f6902ea875f2e7 /cpp/src/qpid/management/ManagementObject.cpp | |
parent | 258cccda74ffaa478366bfacda07e61bd88b20ec (diff) | |
download | qpid-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.cpp | 14 |
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; +} + |