Microsoft Parallel Extensions to .NET Framework is a new set of tools and libraries being developed by MS to simplify parallel programming in this age of parallelism.
Silicon has already reached its limits in playing the electrons around to perform our "computations" faster. A higher "Giga Hertz" CPU is no more a solution for faster execution of programs. The solution apparently is having more CPUs, more cores and more modules. Seems like we are moving towards a "network topology" for processing, funny enough, just like the rest of the nature (apologies to fans of "God power" theory)!
A genuine solution for this issue is coming up with programming languages, compilers and run-times that take care of utilizing "many cores" to run the program representation abstractions (did anybody say Functional Programming is promising?).
Well until that day, we have to stick to a dirty workaround, i.e. Write programs the old way, but with parallelism in mind.
Alright, Microsoft is making that simple (for .NETers at least) and this is where "Microsoft Parallel Extensions" comes into play.
With some pretty straight forward API methods, thanks to Extensions methods and LINQ, parallelizing loops, etc can be implemented simpler. Just change your "foreach" loop with "Parralel.ForEach" method and your loop runs in parallel!
The sad point is you don't know which loops can be parallelized and so, you have to think about each one, analyze it, try it in parallel and if all good, persist it.
How many loops do you have in your application? I don't know about you, but there is no way I'm gonna check all my loops for a potential performance boost this way. It's simply humanly not possible.
So this is my idea (listen well MS folks!): Build a dynamic analyzer to "Suggest" which loops are worth considering for switching to a parallel world.
It's like a "solution in search of a problem". Normally you figure out you need to parallelize, and then evaluate technologies and tools to work it out. My suggestion is dynamically discovering long running loops to find a use for the services in Microsoft Parallel Extensions!
It's like "help me help you". But it works in my "pragmatic world of constant enhancements"! You don't have to be desperate to improve your software. Do it for the sake of making this world a little bit more beautiful and it will pay off!