The CPU meter shows the problem. One core is running at 100 percent, but all the other cores are idle. Your application is CPU-bound, but you are using only a fraction of the computing power of your multicore system. What next?
The answer, in a nutshell, is parallel programming. Where you once would have written the kind of sequential code that is familiar to all programmers, you now find that this no longer meets your performance goals. To use your system’s CPU resources efficiently, you need to split your application into pieces that can run at the same time. This is easier said than done. Parallel programming has a reputation for being the domain of experts and a minefield of subtle, hard-to-reproduce software defects.
Everyone seems to have a favorite story about a parallel program that did not behave as expected because of a mysterious bug. These stories should inspire a healthy respect for the difficulty of the problems you face in writing your own parallel programs. Fortunately, help has arrived. Microsoft Visual Studio® 2010 introduces a new programming model for parallelism that significantly simplifies the job. Behind the scenes are supporting libraries with sophisticated algorithms that dynamically distribute computations on multicore architectures.Proven design patterns are another source of help. A Guide to Parallel Programming introduces you to the most important and frequently used patterns of parallel programming and gives executable code samples for them, using the Task Parallel Library (TPL) and Parallel LINQ (PLINQ).
Colin Campbell is a coauthor of Model-Based Software Testing and Analysis in C# and he has written several academic papers on mathematically rigorous approaches to software analysis. He is a founder and principal at Modeled Computation LLC, in Seattle.
Ralph Johnson is a research associate professor at the University of Illinois. He was one of the four co-authors of Design Patterns, and the leader of the group that developed the first automated refactoring tool, the Smalltalk Refactoring Browser. For the past few years, he has been working on documenting patterns of parallel programming.
Ade Miller works as a Development Lead with Microsoft’s patterns & practices group, where he manages several agile teams who deliver applied engineering guidance to Microsoft’s customers. His primary interests are in parallel computing and agile software development practices.
Stephen Toub works on the Parallel Computing Platform team at Microsoft. He spends his days designing and developing the next generation of concurrent and parallel programming models for .NET and Visual Studio. His team's blog can be found at http://blogs.msdn.com/pfxteamhttp://blogs.msdn.com/pfxteam.
Comments about Microsoft Press Parallel Programming with Microsoft® .NET:
In ninety percent of cases we use only ten percent of available features. According to this rule we almost never use the advanced functions of Office applications or advanced options of the search engines. In the case of .NET 4.0 Parallel Extensions, which is subject of book entitled "Parallel Programming with Microsoft .NET ", it means that ninety percent of .NET programmers, who want to speed up their code running at multicore computers, will limit themselves just to the Parallel.For method only. Well, this method is for sure a measurable progress in comparison with the standard for instruction. But of course the new Task Parallel Library (TPL) offers much more. And here comes the reviewed book. It has shown me how to take an advantage of Parallel Extensions and PLINQ. But be aware, it is not a technical manual. At least not only. Above all it is a guide explaining the paradigms and good practices for using TPL (and when its usage is pointless). Use this book to move up to elite ten percent of .NET developers, who try to use all benefits of TPL to parallelize theirs applications.