-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 11/27/2011 11:51 PM, Debdata wrote: > Hi, > > I have been evaluating D for the past week, and have some concerns > regarding the No Default sharing rule. I have been reading the D > book by Andrei as well. This particular feature has been very > confusing to me as I come from the c++ world. > > I agree that message passing and resource hiding are a great way to > go for a lot of cases, but there are an equally large (Larger?) > number of cases that would benefit from global sharing. Especially > when threading for performance rather than convenience. The cutting > edge of high performance threading is really the task stealing > approach. See intel's TBB, cilk, etc. Implementing things like that > would become unnecessarily verbose as most things will be shared > and we have to keep tagging. > > Unless I am missing something. :D > > -Debdatta Basu
Just wanted to make sure you know, there is a keyword to force global storage: __gshared Also D has std.parallelism, which seems to implement what you are talking about... Would this not be considered [the same as|close enough to] task stealing? wikipedia seems to think so... TBB is a collection of components for parallel programming: Basic algorithms: parallel_for, parallel_reduce, parallel_scan void main() { // Parallel reduce can be combined with std.algorithm.map to interesting // effect. The following example (thanks to Russel Winder) calculates // pi by quadrature using std.algorithm.map and TaskPool.reduce. // getTerm is evaluated in parallel as needed by TaskPool.reduce. // // Timings on an Athlon 64 X2 dual core machine: // // TaskPool.reduce: 12.170 s // std.algorithm.reduce: 24.065 s immutable n = 1_000_000_000; immutable delta = 1.0 / n; real getTerm(int i) { immutable x = ( i - 0.5 ) * delta; return delta / ( 1.0 + x * x ); } immutable pi = 4.0 * taskPool.reduce!"a + b"( std.algorithm.map!getTerm(iota(n))); } But I must admit that I really don't have much experience in this regard and am more interested in hearing your responses. =P -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBAgAGBQJO0yqrAAoJENcHIWLyQiSljswIAOQUG/jxDD6XjplV8vhhxkWQ plxpAVZWv1Oi9TBpK6QB9PMP9qka+BGAPMmEFyoKv4EozcJHxYda3gfqZm+jKdEb j2rcE/5ZSWvgcr2NcPiwhYIraYGGb4TqzhhHcN8mbebze3/Lnjf1tWpT9X9QEDLG eSe/wNMagYHTYAzv1Q1ubbYzawyeyNPclPDDbEEdTVUsJhl02QxKFUxJTX0M2N6a mHhd6DxOf9Pss9iZfjmegLe3Sz5/xxhZfwrYEisTirvRpElNOvzc2JttznFa7wEe wVgUVQ844IHvcg06ecY8XFVbIbPUJMia5J6JGofcr4JmLbEDcXBydH33ffa4rAI= =APH6 -----END PGP SIGNATURE-----