std.parallelism changes done

dsimcha dsimcha at yahoo.com
Wed Mar 23 21:32:26 PDT 2011


I've finished all of the changes that were discussed in the initial 
std.parallelism review.  I know I said I needed more time than this, but 
honestly, I hit a best-case scenario.  I had more time than I 
anticipated to work on it *and* the changes (especially fixing the 
exception handling issue) took less time than I anticipated.

I would say that the documentation has now improved "radically", like 
Andrei suggested it needs to.  I want to thank Andrei and Michael Fortin 
for their extremely useful suggestions, and apologize for getting 
defensive at times.  I felt compelled to defend my initial design in 
cases where I shouldn't have, due to a combination of time pressure and 
a misunderstanding of the review process.  Andrei's suggestions in 
particular led to a tremendous improvement of the documentation and, to 
a lesser extent, an improvement of the API.

In addition to improving the documentation, I added 
Task.executeInNewThread() to allow Task to be useful without a TaskPool. 
  (Should this have a less verbose name?)  I also fixed some exception 
handling bugs, implemented exception chaining for exceptions thrown 
concurrently, and fixed some silliness with respect to seed values in 
reduce().

One thing Andrei mentioned that I'm really not sure about is what to do 
with TaskPool.join().  My example for it is still terrible, because I 
think it's an evolutionary artifact.  It was useful in earlier designs 
that were never released and didn't have high-level data parallelism 
primitives.  I never use it, don't have any good use cases for it and 
would be inclined to remove it entirely.  Andrei seems to have some good 
use cases in mind, but he has not detailed any that I believe are 
reasonably implementable and I'm not sure whether they could be solved 
better using the higher-level data parallelism primitives.

As far as the vote, I know I asked for more time and to allow another 
module ahead of me, and of course I'll honor that.  I'd like to un-git 
stash this review as soon as isemail is done, though.  I anticipate a 
decent amount more suggestions now, given how major the changes have 
been, but most will probably be minor things like documentation 
clarifications and renaming stuff.

The new docs are at 
http://cis.jhu.edu/~dsimcha/d/phobos/std_parallelism.html .


More information about the Digitalmars-d mailing list