Optimize mutex access when adding blocks to block processor (#2676)
This commit is contained in:
parent
e6a2f73c2f
commit
89a8e6d153
1 changed files with 5 additions and 8 deletions
|
@ -76,24 +76,21 @@ void nano::block_processor::add (std::shared_ptr<nano::block> block_a, uint64_t
|
|||
void nano::block_processor::add (nano::unchecked_info const & info_a)
|
||||
{
|
||||
debug_assert (!nano::work_validate (*info_a.block));
|
||||
bool should_notify{ false };
|
||||
if (info_a.block->difficulty () >= nano::work_threshold (info_a.block->work_version ()))
|
||||
{
|
||||
nano::lock_guard<std::mutex> lock (mutex);
|
||||
if (info_a.verified == nano::signature_verification::unknown && (info_a.block->type () == nano::block_type::state || info_a.block->type () == nano::block_type::open || !info_a.account.is_zero ()))
|
||||
{
|
||||
state_block_signature_verification.add (info_a);
|
||||
}
|
||||
else
|
||||
{
|
||||
should_notify = true;
|
||||
blocks.push_back (info_a);
|
||||
{
|
||||
nano::lock_guard<std::mutex> guard (mutex);
|
||||
blocks.push_back (info_a);
|
||||
}
|
||||
condition.notify_all ();
|
||||
}
|
||||
}
|
||||
if (should_notify)
|
||||
{
|
||||
condition.notify_all ();
|
||||
}
|
||||
}
|
||||
|
||||
void nano::block_processor::force (std::shared_ptr<nano::block> block_a)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue