tfiala added a subscriber: tfiala.
tfiala added a comment.

In http://reviews.llvm.org/D13727#268053, @zturner wrote:

> The main thought I had was just that it would make the code simpler and 
> delegate more of the synchronization stuff to the library.  But if we don't 
> get any of that benefit then I guess there's no point in doing that.
>
> That said, I really dont' want to see 48 threads running inside the LLDB 
> process at all times (I have a 48-core machine).  It makes it really annoying 
> to debug.  So some way to tear down threads would be a big help.  But that's 
> even more complexity.
>
> If this is only going to be used occasionally (like each time some DWARF is 
> being parsed), then what about making `TaskPool` non-static?  Just create a 
> new TaskPool each time you want to do work in parallel and tear it down when 
> you're done doing the work?  If someone creates 2 task pools they get 2 
> different sets of threads.  This is kind of why I prefer delegating to the 
> standard library whenever possible, because it shoudl already handle all of 
> these cases.


Ooo - danger lies down that path.  We don't want different parts of lldb that 
can be thread-ized (and there are several of them) all doing work as if they 
have all the threads available to them.  That should be managed by a global 
thread pool for the app.  I think we'll see much more use of this facility once 
we have it in.

> Another option is to go back to the original one line implementation using 
> std::async, but have each asynchronous thread work on `num_compile_units / 
> hardware_concurrency()` compile units inside of a loop.  That way you never 
> get more than `hardware_concurrency()` threads.



http://reviews.llvm.org/D13727



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

Reply via email to