On 05.11.2015 21:52, Handyman wrote:
On Thursday, 5 November 2015 at 20:45:25 UTC, Ali Çehreli wrote:
That's still 1 second per task. The function prepare() cannot be
executed by more than one core.

Thanks.  OK.  So 'prepare' is atomic?  Then let's turn it around: how
can I make the cores prepare a meal of 5 dishes in 1.25 secs?   Should I
rewrite, or split, 'prepare'?



You'd have to split `prepare` further into parallelizable parts. In a real world scenario that may or may not be possible.

When the goal is just sleeping we can do it, of course. Just do another `parallel` loop in `prepare`:

    import std.range: iota;
    foreach (i; parallel(iota(50))) Thread.sleep(20.msecs);

This won't get you down to exactly 1.25 seconds, because the start/finish print outs still take some time, and because of parallelization overhead.

Reply via email to