Different Output after each execution

Moritz Maxeiner via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Aug 18 04:24:24 PDT 2017


On Friday, 18 August 2017 at 10:50:28 UTC, Moritz Maxeiner wrote:
> On Friday, 18 August 2017 at 10:06:04 UTC, Vino wrote:
>> On Friday, 18 August 2017 at 08:34:39 UTC, ikod wrote:
>>> On Friday, 18 August 2017 at 08:00:26 UTC, Vino.B wrote:
>>>> Hi All,
>>>>
>>>>  I have written a small program to just list the 
>>>> directories, but when i run the program each time i am 
>>>> getting different output, hence request you help, below is 
>>>> the code
>>>>
>>>> [...]
>>>
>>> Do you expect some strict execution order when you run 
>>> 'parallel' foreach?
>>
>> Yes, the order of execution should be the same as the order of 
>> the directory provided to scan.
>
> Then you cannot parallelize the work[1], use:
>
> ---
> auto dFiles = dirEntries(Dirlist[i], 
> SpanMode.shallow).filter!(a => a.isDir);
> foreach (d; dFiles)
> {
>     writefln("%-63s %.20s", d, d.timeCreated().toSimpleString);
> }
> ---
>
> [1] You cannot parallelize computations that depend on each 
> other, which you make yours do by requiring a specific order of 
> execution.

Small correction: You *could* parallelize the conversion to 
string `d.timeCreated().toSimpleString`, but then you'd need to 
merge the resulting sets of strings generated in each work unit 
to regain the original order.


More information about the Digitalmars-d-learn mailing list