From de19ad9e7157f1b03442f7e1f8136a4f280c0f2f Mon Sep 17 00:00:00 2001 From: Ted Ross Date: Mon, 15 Aug 2011 16:47:56 +0000 Subject: QPID-3423 - Timing and Performance Improvements in QMF Libraries git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1157907 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/agent/ManagementAgentImpl.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'cpp/src/qpid') diff --git a/cpp/src/qpid/agent/ManagementAgentImpl.cpp b/cpp/src/qpid/agent/ManagementAgentImpl.cpp index 633401ef5b..f183ff8e0c 100644 --- a/cpp/src/qpid/agent/ManagementAgentImpl.cpp +++ b/cpp/src/qpid/agent/ManagementAgentImpl.cpp @@ -1378,13 +1378,26 @@ bool ManagementAgentImpl::ConnectionThread::isSleeping() const void ManagementAgentImpl::PublishThread::run() { - uint16_t totalSleep; + uint16_t totalSleep; + uint16_t sleepTime; while (!shutdown) { agent.periodicProcessing(); totalSleep = 0; - while (totalSleep++ < agent.getInterval() && !shutdown) { - ::sleep(1); + + // + // Calculate a sleep time that is no greater than 5 seconds and + // no less than 1 second. + // + sleepTime = agent.getInterval(); + if (sleepTime > 5) + sleepTime = 5; + else if (sleepTime == 0) + sleepTime = 1; + + while (totalSleep < agent.getInterval() && !shutdown) { + ::sleep(sleepTime); + totalSleep += sleepTime; } } } -- cgit v1.2.1