diff --git a/src/solver/parallel_tactical2.cpp b/src/solver/parallel_tactical2.cpp index 15a9282a3..79c50c5bb 100644 --- a/src/solver/parallel_tactical2.cpp +++ b/src/solver/parallel_tactical2.cpp @@ -228,22 +228,19 @@ class parallel_solver { cancel_background_threads(); } - void release_lease_unlocked(unsigned worker_id, search_tree::node* n) { - if (worker_id >= m_worker_leases.size()) return; - auto& lease = m_worker_leases[worker_id]; - if (!lease.leased_node || lease.leased_node != n) return; - m_search_tree.dec_active_workers(lease.leased_node); - lease = {}; - } - void release_worker_lease_unlocked(unsigned worker_id, node_lease& lease) { if (worker_id >= m_worker_leases.size()) { lease = {}; return; } auto& stored_lease = m_worker_leases[worker_id]; - bool cancel_signaled = stored_lease.leased_node == lease.leased_node && stored_lease.cancel_signaled; - release_lease_unlocked(worker_id, lease.leased_node); + if (!stored_lease.leased_node || stored_lease.leased_node != lease.leased_node) { + lease = {}; + return; + } + bool cancel_signaled = stored_lease.cancel_signaled; + m_search_tree.dec_active_workers(stored_lease.leased_node); + stored_lease = {}; lease = {}; if (cancel_signaled) p.m_workers[worker_id]->limit().dec_cancel(); @@ -741,12 +738,6 @@ class parallel_solver { } } - // NSB: this function is not used - void release_lease(unsigned worker_id, node_lease const& lease) { - std::scoped_lock lock(mux); - release_lease_unlocked(worker_id, lease.leased_node); - } - bool attempt_release_canceled_lease(unsigned worker_id, node_lease& lease) { std::scoped_lock lock(mux); return attempt_release_canceled_lease_unlocked(worker_id, lease);