PathGroups::makeGroupPathEnds only use dispatch queue when threads>1

This commit is contained in:
James Cherry 2020-09-15 20:18:13 -07:00
parent 09524cbedd
commit 0eea513a90
1 changed files with 15 additions and 8 deletions

View File

@ -897,15 +897,22 @@ PathGroups::makeGroupPathEnds(VertexSet *endpoints,
const MinMaxAll *min_max, const MinMaxAll *min_max,
PathEndVisitor *visitor) PathEndVisitor *visitor)
{ {
Vector<MakeEndpointPathEnds*> visitors; if (thread_count_ == 1) {
for (int i = 0; i < thread_count_; i++) MakeEndpointPathEnds end_visitor(visitor, corner, min_max, this);
visitors.push_back(new MakeEndpointPathEnds(visitor, corner, min_max, this)); for (auto endpoint : *endpoints)
for (auto endpoint : *endpoints) { end_visitor.visit(endpoint);
dispatch_queue_->dispatch( [endpoint, &visitors](int i) }
{ visitors[i]->visit(endpoint); } ); else {
Vector<MakeEndpointPathEnds*> 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 } // namespace