From a4ab5521bd52aab72cca99c6ee1937ccfaa270d5 Mon Sep 17 00:00:00 2001 From: Danilo Piparo <danilo.piparo@cern.ch> Date: Fri, 25 Aug 2017 14:09:10 +0200 Subject: [PATCH] Add move assignment and ctor to TTaskGroup, delete copy ctor --- core/imt/inc/ROOT/TTaskGroup.hxx | 3 +++ core/imt/src/TTaskGroup.cxx | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/core/imt/inc/ROOT/TTaskGroup.hxx b/core/imt/inc/ROOT/TTaskGroup.hxx index e3c4b6cf157..e3cc32f8f25 100644 --- a/core/imt/inc/ROOT/TTaskGroup.hxx +++ b/core/imt/inc/ROOT/TTaskGroup.hxx @@ -44,6 +44,9 @@ private: public: TTaskGroup(); + TTaskGroup( TTaskGroup&& other ); + TTaskGroup(const TTaskGroup& ) = delete; + TTaskGroup& operator=( TTaskGroup&& other ); ~TTaskGroup(); void Run(const std::function<void(void)> &closure); diff --git a/core/imt/src/TTaskGroup.cxx b/core/imt/src/TTaskGroup.cxx index f383622d373..057972ed575 100644 --- a/core/imt/src/TTaskGroup.cxx +++ b/core/imt/src/TTaskGroup.cxx @@ -42,8 +42,20 @@ TTaskGroup::TTaskGroup() fTaskContainer = ((TaskContainerPtr_t *)new tbb::task_group()); } +TTaskGroup::TTaskGroup( TTaskGroup&& other ) { + *this = std::move(other); +} + +TTaskGroup& TTaskGroup::operator=( TTaskGroup&& other ) { + fTaskContainer = other.fTaskContainer; + other.fTaskContainer = nullptr; + fCanRun.store(other.fCanRun); + return *this; +} + TTaskGroup::~TTaskGroup() { + if (!fTaskContainer) return; Wait(); delete ((tbb::task_group *)fTaskContainer); } -- GitLab