From 89a8e6d15380c49557b7b1d23aa100fb620f51a0 Mon Sep 17 00:00:00 2001 From: Guilherme Lawless Date: Mon, 23 Mar 2020 10:12:40 +0000 Subject: [PATCH] Optimize mutex access when adding blocks to block processor (#2676) --- nano/node/blockprocessor.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/nano/node/blockprocessor.cpp b/nano/node/blockprocessor.cpp index a68b83ec..198e89c5 100644 --- a/nano/node/blockprocessor.cpp +++ b/nano/node/blockprocessor.cpp @@ -76,24 +76,21 @@ void nano::block_processor::add (std::shared_ptr 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 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 guard (mutex); + blocks.push_back (info_a); + } + condition.notify_all (); } } - if (should_notify) - { - condition.notify_all (); - } } void nano::block_processor::force (std::shared_ptr block_a)