From 4d55c22dfe06496ae7bee109dbe2c24812d0d2d0 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Mon, 4 Nov 2019 09:09:15 +0100 Subject: [PATCH] Use tbb::parallel_invoke() --- .../include/CGAL/Hilbert_sort_median_3.h | 45 ++++++++----------- 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/Spatial_sorting/include/CGAL/Hilbert_sort_median_3.h b/Spatial_sorting/include/CGAL/Hilbert_sort_median_3.h index 761a7cd1929..732139e6ec1 100644 --- a/Spatial_sorting/include/CGAL/Hilbert_sort_median_3.h +++ b/Spatial_sorting/include/CGAL/Hilbert_sort_median_3.h @@ -18,7 +18,7 @@ #include #ifdef CGAL_LINKED_WITH_TBB -#include +#include #endif namespace CGAL { @@ -175,34 +175,25 @@ public: if((end - begin) > 1024){ RandomAccessIterator m1, m2, m3, m4, m5, m6, m7; m4 = internal::hilbert_split(m0, m8, Cmp(_k)); - { - tbb::task_group g; - g.run(Hilbert_split >(m2,m0,m4,Cmp(_k))); - g.run(Hilbert_split >(m6,m4,m8,Cmp(_k))); - g.wait(); - } - { - tbb::task_group g; - g.run(Hilbert_split >(m1,m0,m2,Cmp(_k))); - g.run(Hilbert_split >(m3,m2,m4,Cmp(_k))); - g.run(Hilbert_split >(m5,m4,m6,Cmp(_k))); - g.run(Hilbert_split >(m7,m6,m8,Cmp(_k))); - g.wait(); - } + tbb::parallel_invoke(Hilbert_split >(m2,m0,m4,Cmp(_k)), + Hilbert_split >(m6,m4,m8,Cmp(_k))); - { - tbb::task_group g; - g.run(Recursive_sort(*this, m0, m1)); - g.run(Recursive_sort(*this, m1, m2)); - g.run(Recursive_sort(*this, m2, m3)); - g.run(Recursive_sort(*this, m3, m4)); - g.run(Recursive_sort(*this, m4, m5)); - g.run(Recursive_sort(*this, m5, m6)); - g.run(Recursive_sort(*this, m6, m7)); - g.run(Recursive_sort(*this, m7, m8)); - g.wait(); - } + + tbb::parallel_invoke(Hilbert_split >(m1,m0,m2,Cmp(_k)), + Hilbert_split >(m3,m2,m4,Cmp(_k)), + Hilbert_split >(m5,m4,m6,Cmp(_k)), + Hilbert_split >(m7,m6,m8,Cmp(_k))); + + tbb::parallel_invoke(Recursive_sort(*this, m0, m1), + Recursive_sort(*this, m1, m2), + Recursive_sort(*this, m2, m3), + Recursive_sort(*this, m3, m4), + Recursive_sort(*this, m4, m5), + Recursive_sort(*this, m5, m6), + Recursive_sort(*this, m6, m7), + Recursive_sort(*this, m7, m8)); + } else { recursive_sort<0, false, false, false>(begin, end); }