[lld] r232419 - [Core] Add parallel_for_each
Shankar Easwaran
shankare at codeaurora.org
Mon Mar 16 14:27:32 PDT 2015
Author: shankare
Date: Mon Mar 16 16:27:32 2015
New Revision: 232419
URL: http://llvm.org/viewvc/llvm-project?rev=232419&view=rev
Log:
[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
Modified:
lld/trunk/include/lld/Core/Parallel.h
Modified: lld/trunk/include/lld/Core/Parallel.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Core/Parallel.h?rev=232419&r1=232418&r2=232419&view=diff
==============================================================================
--- lld/trunk/include/lld/Core/Parallel.h (original)
+++ lld/trunk/include/lld/Core/Parallel.h Mon Mar 16 16:27:32 2015
@@ -295,7 +295,12 @@ void parallel_for_each(Iterator begin, I
#else
template <class Iterator, class Func>
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
More information about the llvm-commits
mailing list