The multicore processor revolution has begun. Parallel computation is powerful and increasingly accessible and multicore computation is incorporated into all sorts of applications, including finance software, video games, web applications, machine-learning, and market analysis. To get the best performance, your application has to partition and divide processing to take full advantage of multicore processors. Functional languages help developers support concurrency by encouraging immutable data structures that can be passed between threads without having to worry about a shared state, all while avoiding side effects.
Functional Concurrency in .NET teaches you how to build concurrent and scalable programs in .NET using the functional paradigm. This intermediate-level guide is aimed at developers, architects, and passionate computer programmers who are interested in writing code with improved speed and effectiveness by adopting a declarative and pain-free programming style. You'll start by learning the foundations of concurrency and important functional techniques and paradigms used in the rest of the book. Then you'll dive in to concurrent and parallel programming designs, emphasizing the functional paradigm with both theory and practice with lots of code samples. The third part of the book covers a real "cradle to grave" application implementation, covering the techniques and skills learned during the book.
Well explained look at concurrency in .Net with examples in C# and F#. Most examples are well throughout and realistic while still being easy enough to follow. This book does have one of my pet peeves, it builds upon itself in such a way in which later parts of the book refer back to earlier built library functions, this makes code in later parts useless unless with all the previous library code.
The book shows you different approaches to tackle concurrency. I've finished the book couple month ago and today I managed to apply my knowledge about TPL Dataflow for solving real problem in LOB application.
The task was to upload 2.5k files to the server, execute processing and wait for result using pull-based approach (asking server whether result is ready or not). Naive all-parallel task implementation runs with full CPU load about 30 sec and crash the process after that. In the same time, TPL Dataflow implementation is able to process everything in 7.5min maintaining CPU load about 1.5%.
I am more than happy with the knowledge obtained from the book!