From: Shankar Easwaran Date: Mon, 16 Mar 2015 21:27:32 +0000 (+0000) Subject: [Core] Add parallel_for_each X-Git-Tag: llvmorg-3.7.0-rc1~9084 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9b7374b8216a0860fc0606e2db910a76cc729b20;p=platform%2Fupstream%2Fllvm.git [Core] Add parallel_for_each This adds a parallel_for_each similar to functionality in MSVC concurrency library. This was very patiently reviewed by Rui and credits go to him for this patch. Differential Revision: http://reviews.llvm.org/D8348 llvm-svn: 232419 --- diff --git a/lld/include/lld/Core/Parallel.h b/lld/include/lld/Core/Parallel.h index 62da40c..65176ac 100644 --- a/lld/include/lld/Core/Parallel.h +++ b/lld/include/lld/Core/Parallel.h @@ -295,7 +295,12 @@ void parallel_for_each(Iterator begin, Iterator end, Func func) { #else template void parallel_for_each(Iterator begin, Iterator end, Func func) { - // TODO: Make this parallel. + TaskGroup tg; + ptrdiff_t taskSize = 1024; + while (taskSize <= std::distance(begin, end)) { + tg.spawn([=, &func] { std::for_each(begin, begin + taskSize, func); }); + begin += taskSize; + } std::for_each(begin, end, func); } #endif