From 0eea513a901cdda275dffdbd592b2f1492ecd98d Mon Sep 17 00:00:00 2001 From: James Cherry Date: Tue, 15 Sep 2020 20:18:13 -0700 Subject: [PATCH] PathGroups::makeGroupPathEnds only use dispatch queue when threads>1 --- search/PathGroup.cc | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/search/PathGroup.cc b/search/PathGroup.cc index 0afe3ab2..cfa8e9bc 100644 --- a/search/PathGroup.cc +++ b/search/PathGroup.cc @@ -897,15 +897,22 @@ PathGroups::makeGroupPathEnds(VertexSet *endpoints, const MinMaxAll *min_max, PathEndVisitor *visitor) { - Vector visitors; - for (int i = 0; i < thread_count_; i++) - visitors.push_back(new MakeEndpointPathEnds(visitor, corner, min_max, this)); - for (auto endpoint : *endpoints) { - dispatch_queue_->dispatch( [endpoint, &visitors](int i) - { visitors[i]->visit(endpoint); } ); + if (thread_count_ == 1) { + MakeEndpointPathEnds end_visitor(visitor, corner, min_max, this); + for (auto endpoint : *endpoints) + end_visitor.visit(endpoint); + } + else { + Vector visitors; + for (int i = 0; i < thread_count_; i++) + visitors.push_back(new MakeEndpointPathEnds(visitor, corner, min_max, this)); + for (auto endpoint : *endpoints) { + dispatch_queue_->dispatch( [endpoint, &visitors](int i) + { visitors[i]->visit(endpoint); } ); + } + dispatch_queue_->finishTasks(); + visitors.deleteContents(); } - dispatch_queue_->finishTasks(); - visitors.deleteContents(); } } // namespace