== Quote from dsimcha (dsim...@yahoo.com)'s article > I've created an alpha release of parallelFuture, a high-level parallelization > library for D2. Right now, it has a task pool, futures, parallel foreach, and > parallel map. > Here's the (IMHO) coolest example: > auto pool = new ThreadPool(); > // Assuming we have a function isPrime(), print all > // prime numbers from 0 to uint.max, testing for primeness > // in parallel. > auto myRange = iota(0, uint.max); > foreach(num; pool.parallel(myRange)) { > if(isPrime(num)) { > synchronized writeln(num); > } > } > The interface is there and it seems to work, although it has not been > extensively stress tested yet. Some of the implementation details could > admittedly use some cleaning up, and I would appreciate help from some > threading gurus on improving my queue (right now it's a naive synchronized > singly-linked list) and getting condition mutexes to work properly. (Right > now, I'm using atomic polling followed by sleeping for 1 millisecond in a lot > of places. It's a kludge, but it seems to work reasonably well in practice.) > The code is at: > http://dsource.org/projects/scrapple/browser/trunk/parallelFuture/parallelFuture.d > The docs are at: > http://cis.jhu.edu/~dsimcha/parallelFuture.html
Very good!