associative array with Parallel

seany seany at uni-bonn.de
Thu Jul 22 05:46:25 UTC 2021


Consider :

     int [] ii;
     foreach(i,dummy; parallel(somearray)) {
       ii ~= somefunc(dummy);
     }


This is not safe, because all threads are accessing the same 
array and trying to add values and leading to collision.


But :

     int [] ii;
     ii.length = somearray.length;
     foreach(i,dummy; parallel(somearray)) {
       ii[i] ~= somefunc(dummy);
     }


This is safe. In this case, threads are accessing an unique 
memory location each.

But what about this :

     int [ string ] ii;
     ii.length = somearray.length;
     foreach(i,dummy; parallel(somearray)) {
       string j = generateUniqueString(i);
       ii[j] ~= somefunc(dummy);
     }


Is this also guaranteed thread safe?


In my 5 runs, I did not see any problems, but I'd like to 
confirm. Thank you.




More information about the Digitalmars-d-learn mailing list