Design Patterns for Decomposition and Coordination on Multicore Architectures
Colin Campbell, Ralph Johnson, Ade Miller and Stephen Toub. Foreword by Tony Hey
A book that introduces .NET programmers to patterns for including parallelism in their applications. Examples of these patterns are parallel loops, parallel tasks and data aggregation with map-reduce. Each pattern has its own chapter. Each chapter includes a description of the problem, an example of where the pattern is applicable, and code that implements the solution. On this site you will find; a preliminary draft of the book, the accompanying code samples and answers to the end of chapter questions.
You can read this book for from following URL
Parallel Programming is a one of the major thing in discussion now a days. Framework 4.0 is having Parallel Programming as one of the major feature. As we know that now a days computers are having multi-cores (dual ,quad and even more) and in near future the number of cores will increase significantly. To Leverage these advantage of hardware microsoft has given the library to support the enhanced parallel programming. It includes, new runtime, new class libraries and diagnostic tools.
These will help developer to write efficient code to get maximum out of the machine without getting into difficulties of the threading and thread pools. Architecture of the parallel computing by microsoft
High level Architecture
We can start our Journey with Task Parallel library (TPL). User can use TPL to get the maximum performance from the code by adding parallelism and concurrency to the applications. It will help user(developers) to utilize all the processors that are available. TPL can partition the work, schedule the threads on the thread pools, state management and cancellation and various low level details. In this way TPL hides complexity of the low level handling of the threads and scheduling
Parallel programing using TPL is very much useful to achieve full utilization of the processors, but doing parallel code for simple tasks will have negative effect on the performance. So we have to look for a need and place where we should implement it.