parallel
anonymous via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Nov 5 13:10:15 PST 2015
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.
More information about the Digitalmars-d-learn
mailing list