scott.smith added inline comments.

================
Comment at: source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:1995-1996
     //----------------------------------------------------------------------
-    TaskMapOverInt(0, num_compile_units, extract_fn);
+    llvm::parallel::for_each_n(llvm::parallel::par, 0U, num_compile_units,
+                               extract_fn);
 
----------------
scott.smith wrote:
> zturner wrote:
> > What did you decide about the recursive parallelism?  I don't know if that 
> > works yet using LLVM's default executor.
> 1. This code doesn't care.
> 2. It looks like it works, since (I think) for_each creates a separate 
> TaskGroup for each call.
> 3. However I got a deadlock when using this for parallelizing the dynamic 
> library loading itself, which used to work.  That could either be due to 
> other code changes, some oversight on my part, or it could be that for_each_n 
> doesn't actually support recursion - which means that I misunderstood 
> for_each_n.  So I have more work to do...
On further inspection, llvm::parallel does not support recursion, since 
TaskGroup uses a single static Executor, and provides no way to override that 
(and besides, there's no way to pass parameters from for_each_n to the 
TaskGroup).  That's fixable though, by making the default executor a thread 
local variable, so that worker threads can enqueue work to a different executor.


Repository:
  rL LLVM

https://reviews.llvm.org/D33246



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to