On 6/14/21 11:39 PM, seany wrote:
> I know that D has parallel foreach [like
> this](http://ddili.org/ders/d.en/parallelism.html).
I gave an example of it in my DConf Online 2020 presentation as well:
https://www.youtube.com/watch?v=dRORNQIB2wA&t=1324s
> int[] c ;
> foreach(aa; parallel (a)) {
> foreach (bb; parallel(b)) {
>
> c ~= aa+bb;
That is violating a parallelism requirement that loop bodies must be
independent. (I use a similar example during my presentation above.) You
need to either pre-allocate the array (as jfondren said) or not store
the elements at all but use them independently in the loop body.
Yes, std.concurrency is another option. I show a "recipe" of usage here:
https://www.youtube.com/watch?v=dRORNQIB2wA&t=1737s
Ali