How works internally ParallelForEach

Zardoz luis.panadero at gmail.com
Sat Dec 1 02:35:37 PST 2012


How works internally ParallelFor ?
I read that lauchn multiple tasks. Each task procces a chunk of 
the range, but each task it's syncronized , ahve some kind of 
comunication between or are using shared memory or what ??

In this example code :
import std.stdio;
import std.parallelism;
import std.math;

void main() {
   auto logs = new double[10_000_000];
   double total = 0;
   foreach(i, ref elem; taskPool.parallel(logs, 100)) {
     elem = log(i + 1.0);
     total += elem;
   }

   writeln(total);
}

I understand that are launched N task, doing a chunk of 100 
elements from logs array. But what happen with "total". There is 
only a "total" and D is using memory barriers / atomic operations 
to write in it ? Or each Task have his own "total" and later 
joint each private "total" in the outside "total".


More information about the Digitalmars-d-learn mailing list