diff --git a/src/libs/utils/mapreduce.h b/src/libs/utils/mapreduce.h index 828b16b31f9..607ff5951aa 100644 --- a/src/libs/utils/mapreduce.h +++ b/src/libs/utils/mapreduce.h @@ -369,9 +369,12 @@ template mapReduce(ForwardIterator begin, ForwardIterator end, InitFunction &&init, MapFunction &&map, ReduceFunction &&reduce, CleanUpFunction &&cleanup, - MapReduceOption option = MapReduceOption::Unordered, int size = -1) + MapReduceOption option = MapReduceOption::Unordered, + QThread::Priority priority = QThread::InheritPriority, + int size = -1) { - return runAsync(Internal::blockingIteratorMapReduce< + return runAsync(priority, + Internal::blockingIteratorMapReduce< ForwardIterator, typename std::decay::type, typename std::decay::type, @@ -438,9 +441,11 @@ template mapReduce(Container &&container, InitFunction &&init, MapFunction &&map, ReduceFunction &&reduce, CleanUpFunction &&cleanup, - MapReduceOption option = MapReduceOption::Unordered) + MapReduceOption option = MapReduceOption::Unordered, + QThread::Priority priority = QThread::InheritPriority) { - return runAsync(Internal::blockingContainerMapReduce< + return runAsync(priority, + Internal::blockingContainerMapReduce< typename std::decay::type, typename std::decay::type, typename std::decay::type, @@ -458,9 +463,11 @@ template mapReduce(std::reference_wrapper containerWrapper, InitFunction &&init, MapFunction &&map, ReduceFunction &&reduce, CleanUpFunction &&cleanup, - MapReduceOption option = MapReduceOption::Unordered) + MapReduceOption option = MapReduceOption::Unordered, + QThread::Priority priority = QThread::InheritPriority) { - return runAsync(Internal::blockingContainerRefMapReduce< + return runAsync(priority, + Internal::blockingContainerRefMapReduce< Container, typename std::decay::type, typename std::decay::type, @@ -478,14 +485,15 @@ template ::type> QFuture mapReduce(ForwardIterator begin, ForwardIterator end, MapFunction &&map, State &&initialState, - ReduceFunction &&reduce, MapReduceOption option = MapReduceOption::Unordered, int size = -1) + ReduceFunction &&reduce, MapReduceOption option = MapReduceOption::Unordered, + QThread::Priority priority = QThread::InheritPriority, int size = -1) { return mapReduce(begin, end, Internal::StateWrapper(std::forward(initialState)), std::forward(map), Internal::ReduceWrapper(std::forward(reduce)), &Internal::cleanupReportingState, - option, size); + option, priority, size); } template ::type> QFuture mapReduce(Container &&container, MapFunction &&map, State &&initialState, ReduceFunction &&reduce, - MapReduceOption option = MapReduceOption::Unordered) + MapReduceOption option = MapReduceOption::Unordered, + QThread::Priority priority = QThread::InheritPriority) { return mapReduce(std::forward(container), Internal::StateWrapper(std::forward(initialState)), std::forward(map), Internal::ReduceWrapper(std::forward(reduce)), &Internal::cleanupReportingState, - option); + option, priority); } template (map), std::forward(initialState), std::forward(reduce), - option, size).result(); + option, priority, size).result(); } template (container), std::forward(map), std::forward(initialState), std::forward(reduce), - option).result(); + option, priority).result(); } template ::type> QFuture map(ForwardIterator begin, ForwardIterator end, MapFunction &&map, - MapReduceOption option = MapReduceOption::Ordered, int size = -1) + MapReduceOption option = MapReduceOption::Ordered, + QThread::Priority priority = QThread::InheritPriority, int size = -1) { return mapReduce(begin, end, &Internal::dummyInit, std::forward(map), Internal::DummyReduce(), &Internal::dummyCleanup, - option, size); + option, priority, size); } template ::type> QFuture -map(Container &&container, MapFunction &&map, MapReduceOption option = MapReduceOption::Ordered) +map(Container &&container, MapFunction &&map, MapReduceOption option = MapReduceOption::Ordered, + QThread::Priority priority = QThread::InheritPriority) { return mapReduce(std::forward(container), Internal::dummyInit, std::forward(map), Internal::DummyReduce(), Internal::dummyCleanup, - option); + option, priority); } template class ResultContainer, typename ForwardIterator, typename MapFunction, @@ -562,11 +575,12 @@ template class ResultContainer, typename ForwardIterator, ty Q_REQUIRED_RESULT ResultContainer mapped(ForwardIterator begin, ForwardIterator end, MapFunction &&mapFun, - MapReduceOption option = MapReduceOption::Ordered, int size = -1) + MapReduceOption option = MapReduceOption::Ordered, + QThread::Priority priority = QThread::InheritPriority, int size = -1) { return Utils::transform(map(begin, end, std::forward(mapFun), - option, size).results(), + option, priority, size).results(), [](const MapResult &r) { return r; }); } @@ -574,11 +588,13 @@ template class ResultContainer, typename Container, typename typename MapResult = typename Internal::resultType::type> Q_REQUIRED_RESULT ResultContainer -mapped(Container &&container, MapFunction &&mapFun, MapReduceOption option = MapReduceOption::Ordered) +mapped(Container &&container, MapFunction &&mapFun, + MapReduceOption option = MapReduceOption::Ordered, + QThread::Priority priority = QThread::InheritPriority) { return Utils::transform(map(container, std::forward(mapFun), - option).results(), + option, priority).results(), [](const MapResult &r) { return r; }); } diff --git a/src/plugins/autotest/testcodeparser.cpp b/src/plugins/autotest/testcodeparser.cpp index dadae37de89..fe4c1132f1e 100644 --- a/src/plugins/autotest/testcodeparser.cpp +++ b/src/plugins/autotest/testcodeparser.cpp @@ -354,7 +354,8 @@ void TestCodeParser::scanForTests(const QStringList &fileList) [this](QFutureInterface &fi, const QString &file) { parseFileForTests(m_testCodeParsers, fi, file); }, - Utils::MapReduceOption::Unordered); + Utils::MapReduceOption::Unordered, + QThread::LowestPriority); m_futureWatcher.setFuture(future); if (list.size() > 5) { Core::ProgressManager::addTask(future, tr("Scanning for Tests"), diff --git a/tests/auto/mapreduce/tst_mapreduce.cpp b/tests/auto/mapreduce/tst_mapreduce.cpp index aaa80de424d..413d8753602 100644 --- a/tests/auto/mapreduce/tst_mapreduce.cpp +++ b/tests/auto/mapreduce/tst_mapreduce.cpp @@ -214,7 +214,7 @@ void tst_MapReduce::map() QCOMPARE(container, QList({4, 10, 2})); Utils::map(container.begin(), container.end(), [](int &x) { x *= 2; }, - Utils::MapReduceOption::Unordered, 3).waitForFinished(); + Utils::MapReduceOption::Unordered, QThread::InheritPriority, 3).waitForFinished(); QCOMPARE(container, QList({8, 20, 4})); }