[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