Browse Source

Merge pull request #5971

351593b replace absolute sleep with conditional wait (pstratem)
0.13
Wladimir J. van der Laan 10 years ago
parent
commit
18d2832678
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
  1. 10
      src/net.cpp

10
src/net.cpp

@ -100,6 +100,7 @@ NodeId nLastNodeId = 0; @@ -100,6 +100,7 @@ NodeId nLastNodeId = 0;
CCriticalSection cs_nLastNodeId;
static CSemaphore *semOutbound = NULL;
boost::condition_variable messageHandlerCondition;
// Signals for message handling
static CNodeSignals g_signals;
@ -532,8 +533,10 @@ bool CNode::ReceiveMsgBytes(const char *pch, unsigned int nBytes) @@ -532,8 +533,10 @@ bool CNode::ReceiveMsgBytes(const char *pch, unsigned int nBytes)
pch += handled;
nBytes -= handled;
if (msg.complete())
if (msg.complete()) {
msg.nTime = GetTimeMicros();
messageHandlerCondition.notify_one();
}
}
return true;
@ -1358,6 +1361,9 @@ bool OpenNetworkConnection(const CAddress& addrConnect, CSemaphoreGrant *grantOu @@ -1358,6 +1361,9 @@ bool OpenNetworkConnection(const CAddress& addrConnect, CSemaphoreGrant *grantOu
void ThreadMessageHandler()
{
boost::mutex condition_mutex;
boost::unique_lock<boost::mutex> lock(condition_mutex);
SetThreadPriority(THREAD_PRIORITY_BELOW_NORMAL);
while (true)
{
@ -1417,7 +1423,7 @@ void ThreadMessageHandler() @@ -1417,7 +1423,7 @@ void ThreadMessageHandler()
}
if (fSleep)
MilliSleep(100);
messageHandlerCondition.timed_wait(lock, boost::posix_time::microsec_clock::universal_time() + boost::posix_time::milliseconds(100));
}
}

Loading…
Cancel
Save