Checkpoint synchronization: Difference between revisions

Harmonization of D entry, formatting, lines length
(Add D variant)
(Harmonization of D entry, formatting, lines length)
Line 305:
 
=={{header|D}}==
<lang d>import std.stdio: writeln;
 
<lang d>
import std.parallelism: taskPool, defaultPoolThreads, totalCPUs;
import std.stdio: writeln;
 
void buildMechanism(uint nparts) {
auto details = new uint[nparts];
foreach (uint i, ref detail; taskPool.parallel(details)) {
writeln("Build detail ", i);
detail = i;
}
}
 
/* this function // This could be written more concisely via std.parallelism.reduce,
// but we want to see the checkpoint explicitly. */
writeln("Checkpoint reached. Assemble details ...");
uint sum = 0;
foreach (ref detail; details) {
sum += foreach (immutable detail; details)
sum += detail;
}
writeln("Mechanism with ", nparts, " parts finished: ", sum);
}
 
void main() {
defaultPoolThreads = totalCPUs + 1; /*/ totalCPUs - 1 ison default */.
buildMechanism(42);
buildMechanism(11);
}</lang d>
}
{{out|Example output:}}
</lang>
<pre>Build detail 0
 
Example output:
 
<pre>
Build detail 0
Build detail 2
Build detail 6
Line 348 ⟶ 342:
Build detail 1
Checkpoint reached. Assemble details ...
Mechanism with 11 parts finished: 55</pre>
</pre>
 
=={{header|E}}==