mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
Get a lock acquire out of a critical fast path.
This commit is contained in:
@@ -168,15 +168,19 @@ void InboundLedger::onTimer (bool progress)
|
||||
|
||||
void InboundLedger::awaitData ()
|
||||
{
|
||||
boost::recursive_mutex::scoped_lock sl (mLock);
|
||||
++mWaitCount;
|
||||
}
|
||||
|
||||
void InboundLedger::noAwaitData ()
|
||||
{ // subtract one if mWaitCount is greater than zero
|
||||
do
|
||||
{
|
||||
boost::recursive_mutex::scoped_lock sl (mLock);
|
||||
|
||||
if (mWaitCount > 0 ) --mWaitCount;
|
||||
int j = mWaitCount.get();
|
||||
if (j <= 0)
|
||||
return;
|
||||
if (mWaitCount.compareAndSetBool(j - 1, j))
|
||||
return;
|
||||
} while (1);
|
||||
}
|
||||
|
||||
void InboundLedger::addPeers ()
|
||||
@@ -285,7 +289,7 @@ void InboundLedger::trigger (Peer::ref peer)
|
||||
return;
|
||||
}
|
||||
|
||||
if ((mWaitCount > 0) && peer)
|
||||
if ((mWaitCount.get() > 0) && peer)
|
||||
{
|
||||
WriteLog (lsTRACE, InboundLedger) << "Skipping peer";
|
||||
return;
|
||||
|
||||
@@ -110,7 +110,7 @@ private:
|
||||
bool mSignaled;
|
||||
bool mAccept;
|
||||
bool mByHash;
|
||||
int mWaitCount;
|
||||
beast::Atomic<int> mWaitCount;
|
||||
uint32 mSeq;
|
||||
|
||||
std::set <SHAMapNode> mRecentTXNodes;
|
||||
|
||||
Reference in New Issue
Block a user