25 lines
743 B
D
25 lines
743 B
D
import std.stdio;
|
|
import std.parallelism: taskPool, defaultPoolThreads, totalCPUs;
|
|
|
|
void buildMechanism(uint nparts) {
|
|
auto details = new uint[nparts];
|
|
foreach (i, ref detail; taskPool.parallel(details)) {
|
|
writeln("Build detail ", i);
|
|
detail = i;
|
|
}
|
|
|
|
// 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 (immutable detail; details)
|
|
sum += detail;
|
|
writeln("Mechanism with ", nparts, " parts finished: ", sum);
|
|
}
|
|
|
|
void main() {
|
|
defaultPoolThreads = totalCPUs + 1; // totalCPUs - 1 on default.
|
|
buildMechanism(42);
|
|
buildMechanism(11);
|
|
}
|