From 3ddafd3b9ac089252814af87cb7d9fe534cf59a4 Mon Sep 17 00:00:00 2001 From: Douglas Rumbaugh Date: Fri, 9 Feb 2024 13:09:05 -0500 Subject: Removed centralized version structure --- include/framework/DynamicExtension.h | 38 +++--------------------------------- include/framework/scheduling/Epoch.h | 5 +++++ 2 files changed, 8 insertions(+), 35 deletions(-) (limited to 'include') diff --git a/include/framework/DynamicExtension.h b/include/framework/DynamicExtension.h index 238fc7f..7ea5370 100644 --- a/include/framework/DynamicExtension.h +++ b/include/framework/DynamicExtension.h @@ -12,8 +12,6 @@ #include #include #include -#include -#include #include "framework/interface/Scheduler.h" #include "framework/scheduling/FIFOScheduler.h" @@ -26,12 +24,10 @@ #include "framework/util/Configuration.h" #include "framework/scheduling/Epoch.h" - - namespace de { template S, QueryInterface Q, LayoutPolicy L=LayoutPolicy::TEIRING, - DeletePolicy D=DeletePolicy::TAGGING, SchedulerInterface SCHED=SerialScheduler> + DeletePolicy D=DeletePolicy::TAGGING, SchedulerInterface SCHED=FIFOScheduler> class DynamicExtension { typedef S Shard; typedef MutableBuffer Buffer; @@ -62,8 +58,6 @@ public: m_current_epoch.store({new _Epoch(0, vers, m_buffer, 0), 0}); m_previous_epoch.store({nullptr, 0}); m_next_epoch.store({nullptr, 0}); - - m_versions.insert(vers); } ~DynamicExtension() { @@ -80,10 +74,6 @@ public: delete m_previous_epoch.load().epoch; delete m_buffer; - - for (auto e : m_versions) { - delete e; - } } /* @@ -320,8 +310,8 @@ private: Buffer *m_buffer; - std::mutex m_struct_lock; - std::set m_versions; + //std::mutex m_struct_lock; + //std::set m_versions; alignas(64) std::atomic m_reconstruction_scheduled; @@ -448,11 +438,6 @@ private: end_job(current_epoch); - std::unique_lock m_struct_lock; - m_versions.insert(m_next_epoch.load().epoch->get_structure()); - m_struct_lock.release(); - - return m_next_epoch.load().epoch; } @@ -494,23 +479,6 @@ private: } while(true); delete epoch; - - /* - * Following the epoch's destruction, any buffers - * or structures with no remaining references can - * be safely freed. - */ - std::unique_lock lock(m_struct_lock); - - for (auto itr = m_versions.begin(); itr != m_versions.end();) { - if ((*itr)->get_reference_count() == 0) { - auto tmp = *itr; - itr = m_versions.erase(itr); - delete tmp; - } else { - itr++; - } - } } static void reconstruction(void *arguments) { diff --git a/include/framework/scheduling/Epoch.h b/include/framework/scheduling/Epoch.h index 3ffa145..9377fb0 100644 --- a/include/framework/scheduling/Epoch.h +++ b/include/framework/scheduling/Epoch.h @@ -47,6 +47,11 @@ public: if (m_structure) { m_structure->release_reference(); } + + if (m_structure->get_reference_count() == 0) { + delete m_structure; + } + } /* -- cgit v1.2.3