mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-02 09:46:52 -05:00
Avoid excessive lock contention in CCheckQueue::Add
This commit is contained in:
parent
7efc628539
commit
c43aa62343
1 changed files with 8 additions and 5 deletions
|
@ -167,12 +167,15 @@ public:
|
||||||
//! Add a batch of checks to the queue
|
//! Add a batch of checks to the queue
|
||||||
void Add(std::vector<T>& vChecks)
|
void Add(std::vector<T>& vChecks)
|
||||||
{
|
{
|
||||||
LOCK(m_mutex);
|
{
|
||||||
for (T& check : vChecks) {
|
LOCK(m_mutex);
|
||||||
queue.push_back(T());
|
for (T& check : vChecks) {
|
||||||
check.swap(queue.back());
|
queue.emplace_back();
|
||||||
|
check.swap(queue.back());
|
||||||
|
}
|
||||||
|
nTodo += vChecks.size();
|
||||||
}
|
}
|
||||||
nTodo += vChecks.size();
|
|
||||||
if (vChecks.size() == 1)
|
if (vChecks.size() == 1)
|
||||||
m_worker_cv.notify_one();
|
m_worker_cv.notify_one();
|
||||||
else if (vChecks.size() > 1)
|
else if (vChecks.size() > 1)
|
||||||
|
|
Loading…
Add table
Reference in a new issue