Avoid excessive lock contention in CCheckQueue::Add

This commit is contained in:
Hennadii Stepanov 2021-10-30 19:33:09 +03:00
parent 7efc628539
commit c43aa62343
No known key found for this signature in database
GPG Key ID: 410108112E7EA81F

View File

@ -166,13 +166,16 @@ public:
//! Add a batch of checks to the queue
void Add(std::vector<T>& vChecks)
{
{
LOCK(m_mutex);
for (T& check : vChecks) {
queue.push_back(T());
queue.emplace_back();
check.swap(queue.back());
}
nTodo += vChecks.size();
}
if (vChecks.size() == 1)
m_worker_cv.notify_one();
else if (vChecks.size() > 1)