This is an open-ended question. What approaches should I consider?

+5  A: 

There are some parallel extensions to .NET that are currently in testing and available at Microsoft's Parallel Computing Developer Center. They have a few interesting items that you would expect like Parallel foreach and a parallel version of LINQ called PLINQ. Some of the best information about the extensions is on Channel 9.

John Downey

I think we could also include non-.NET-specific approaches to parallel processing if those are among the best options to consider.

+1  A: 


If you want to branch outside of .NET there has been a lot of discussion about Intel's Threading Building Blocks which is a parallel library for C++.

John Downey
+8  A: 

Your first step is to find and understand the parallelism in your problem. It is really easy to write multi-threaded code that performs no better than the single-threaded code it replaces. "Patterns for Parallel Programming" (Amazon) is a great introduction to the key concepts.

Once you have a workable design, start reading the articles in the "Concurrency" topic in the MSDN Magazine archives (link), particularly anything written by Jeff Richter. Those will give you the nuts and bolts stuff on the threading constructs specific to Windows and .NET. (The multi-threading section in Richter's "CLR via C# (Amazon)is short, but very insightful - highly recommended.)


There are many options and the best solution will depend on the nature of the problem you are trying to solve. If you are trying to solve an embarassingly parallel problem then dividing and parallelising the tasks will be trivial. In that case the challenge will come in distributing and managing the data used.

Some suggestions would be:

John Channing

If I could vote up. I'd vote up MckenzieG1's answer. Making sure parallel processing is going to be a benefit should be the first step. At least for a non-academic project.

Jack B Nimble

I know this is an old thread. But, posting here anyway. Check out this pdc session :

Parallel Programming for Managed Developers with the Next Version of Microsoft Visual Studio


also check out the project at codeplex which is a tutorial of sorts on parallelization using .net among other things: