Parallel Programming with Microsoft® .NET: Design Patterns for Decomposition and Coordination on Multicore Architectures (Patterns & Practices) Paperback – 13 Sep 2010
Customers who bought this item also bought
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Would you like to tell us about a lower price?
If you are a seller for this product, would you like to suggest updates through seller support?
About the Author
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.
Top customer reviews
The book itself, like many (but not all) books on patterns, is a pretty dry read, particularly if you read it end to end (which is what I did). However, it contains a lot of useful information covering half a dozen patterns, related anti-patterns (things that impact negatively on parallel performance), some background information on how things like the default task scheduler and the thread pool work, plenty of useful references, and details of the debugging/profiling support in Visual Studio, amongst other things.
I would say that this book assumes some prior experience of multi-threading. It's certainly not a beginners guide to threading. It also assumes knowledge of delegates and lambda expressions in C# so possibly isn't for people completely new to C# either (unless they know PLINQ). Nor is this book a complete reference to the parallel processing support in .Net 4. It is an overview/introduction/taster of the patterns supported, but not a complete reference. I would say that it is most useful for developers with existing multi-threading experience, who are moving to developing in .Net 4. Certainly, after reading this book, I put together some C# sample code using the patterns in a matter of minutes, rather than the hours or days it would have taken to code the equivalent from scratch in unmanaged C++.
Spotted one typo and what I believe is an error (reported and awaiting confirmation), but on the whole a good book, at a more advanced level than most books about parallel programming..
Recommended, as long as you have some threading experience, and are familiar with delegates and lambda expressions.
That said, the book is useful in explaining the concepts of parallel programming and how to make the best use of this facility in today's multi-core architecture PCs and to create more efficient software in the greatest number of situations, with many code examples for the more common patterns.
All in all, a good technical read and a worthwhile buy.
Most helpful customer reviews on Amazon.com
The book covers design principles and patterns, and then relates them to each layer of a traditional layered system. It includes business, services, data access, and presentation layers. The authors include several different patterns for each layer and discuss the pros and cons of each.
The book focuses on the technical aspects of .NET architecture. It does not cover the soft skills need to be an architect, or cover the customer facing skills need to communicate with the business stakeholders. You won't find much on process either, just an overview. These missing topics have not taken away from the book, they have made it a stronger book. There are plenty of resources on how to execute the soft skills and architecture process. This book concentrates on how to communicate with the development team through solid design and well known patterns and principles.
This is a must read for all architects, no matter what your skill set is.
A .NET developer looking to move into architecture should make this book their first stop on a long journey. This will definitely get you off to a very strong start.
This book will not leave my side... until the 2nd edition...
The book starts with an introduction to potential parallelism, tasks, coordinating tasks, shared data, and the limits of parallelism. It then has a chapter on each pattern which include Parallel Loops, Parallel Tasks, Parallel Aggregation, Futures, Dynamic Task Parallelism, and Pipelines.
It continues with some awesome appendices- Adapting Object-Oriented Patterns, Debugging and Profiling Parallel Applications, and Technology Overview. It ends with a nice glossary, references, and indexes.
The book does a nice job of giving examples in PLINQ (Parallel LINQ) and TPL (Task Parallel Library).
There is a great companion site located on CodePlex. You can download Answers to end of chapter questions, C#, F#, and VB code samples, Appendix B Color Figures, and a nice demo application.
The book is very well written and the authors do a great job of making what would seem like a complex topic easy to understand.
The thing I like most about this book is that there is no fluff. The book is all about getting you up and running, but up and running the right way with the right tools.
This book is a must read for anyone considering moving into parallel programming with the .NET framework.
By the end of this book I kind of liked it, although having said that it doesn't really offer anything new that hasn't been covered in other books, apart from the fact that the focus is on .Net technologies. For me I don't think this book offers too much to experienced developers, especially those with a lot of experience using .Net. Also for general software architectural principals there are better books around. Being fairly new to the .Net framework I brought this book primarily for an overview of .Net technologies that could be used in architecting applications and the best practices in applying them. In that sense this book is pretty good.
So if you're new to architecting software, or want an overview of .Net technologies and frameworks read this book. For experienced .Net folks I wouldn't bother, as this book probably won't teach you too much, except perhaps maybe providing a different perspective on software development.
In summary, the first half of this book (principals of software development) I'd rate as 2 stars, the second half (system design), 4 stars.
Look for similar items by category
- Books > Computing & Internet > Computer Science > Architecture & Microprocessors
- Books > Computing & Internet > Computer Science > Information Systems
- Books > Computing & Internet > Microsoft Windows > Applications > Access > Programming
- Books > Computing & Internet > Programming > Languages
- Books > Computing & Internet > Programming > Languages & Tools
- Books > Computing & Internet > Programming > Microsoft Windows
- Books > Computing & Internet > Programming > Software Design, Testing & Engineering > Design Patterns
- Books > Computing & Internet > Programming > Software Design, Testing & Engineering > Functional Programming
- Books > Computing & Internet > Programming > Software Design, Testing & Engineering > Software Architecture