Use Thread in LoadManager

This commit is contained in:
Vinnie Falco
2013-09-18 14:15:14 -07:00
parent 3efab6732f
commit f22e91cb9e
3 changed files with 10 additions and 11 deletions

View File

@@ -464,7 +464,7 @@ public:
mSweepTimer.expires_from_now (boost::posix_time::seconds (10));
mSweepTimer.async_wait (BIND_TYPE (&ApplicationImp::sweep, this));
m_loadManager->startThread ();
m_loadManager->start ();
#if ! BEAST_WIN32
#ifdef SIGINT

View File

@@ -10,7 +10,7 @@ SETUP_LOG (LoadManager)
class LoadManagerImp
: public LoadManager
, public beast::InterruptibleThread::EntryPoint
, public Thread
{
private:
/* Entry mapping utilization to cost.
@@ -60,8 +60,8 @@ private:
public:
LoadManagerImp ()
: mLock (this, "LoadManagerImp", __FILE__, __LINE__)
, m_thread ("loadmgr")
: Thread ("loadmgr")
, mLock (this, "LoadManagerImp", __FILE__, __LINE__)
, m_logThread ("loadmgr_log")
, mCreditRate (100)
, mCreditLimit (500)
@@ -119,12 +119,12 @@ private:
{
UptimeTimer::getInstance ().endManualUpdates ();
m_thread.interrupt ();
stopThread ();
}
void startThread ()
void start ()
{
m_thread.start (this);
startThread();
}
void canonicalize (LoadSource& source, int now) const
@@ -324,14 +324,14 @@ private:
// VFALCO NOTE Where's the thread object? It's not a data member...
//
void threadRun ()
void run ()
{
// VFALCO TODO replace this with a beast Time object?
//
// Initialize the clock to the current time.
boost::posix_time::ptime t = boost::posix_time::microsec_clock::universal_time ();
while (! m_thread.interruptionPoint ())
while (! threadShouldExit ())
{
{
// VFALCO NOTE What is this lock protecting?
@@ -413,7 +413,6 @@ private:
typedef LockType::ScopedLockType ScopedLockType;
LockType mLock;
beast::InterruptibleThread m_thread;
beast::ThreadWithCallQueue m_logThread;
int mCreditRate; // credits gained/lost per second

View File

@@ -45,7 +45,7 @@ public:
*/
// VFALCO TODO Simplify the two stage initialization to one stage (construction).
// NOTE In stand-alone mode the load manager thread isn't started
virtual void startThread () = 0;
virtual void start () = 0;
/** Turn on deadlock detection.