mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-26 14:05:51 +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 ()
|
||||
{
|
||||
boost::recursive_mutex::scoped_lock sl (mLock);
|
||||
|
||||
if (mWaitCount > 0 ) --mWaitCount;
|
||||
{ // subtract one if mWaitCount is greater than zero
|
||||
do
|
||||
{
|
||||
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;
|
||||
|
||||
@@ -102,16 +102,16 @@ private:
|
||||
boost::weak_ptr <PeerSet> pmDowncast ();
|
||||
|
||||
private:
|
||||
Ledger::pointer mLedger;
|
||||
bool mHaveBase;
|
||||
bool mHaveState;
|
||||
bool mHaveTransactions;
|
||||
bool mAborted;
|
||||
bool mSignaled;
|
||||
bool mAccept;
|
||||
bool mByHash;
|
||||
int mWaitCount;
|
||||
uint32 mSeq;
|
||||
Ledger::pointer mLedger;
|
||||
bool mHaveBase;
|
||||
bool mHaveState;
|
||||
bool mHaveTransactions;
|
||||
bool mAborted;
|
||||
bool mSignaled;
|
||||
bool mAccept;
|
||||
bool mByHash;
|
||||
beast::Atomic<int> mWaitCount;
|
||||
uint32 mSeq;
|
||||
|
||||
std::set <SHAMapNode> mRecentTXNodes;
|
||||
std::set <SHAMapNode> mRecentASNodes;
|
||||
|
||||
Reference in New Issue
Block a user