I had recently read Java Concurrency in Practice. I picked up this one in part hoping to see corresponding treatment for .NET. The book did not deliver.
On a surface level, a part of it talked about rather basic and abstract ways of dividing a task to be executed in parallel, and how it can improve overall performance. Those parts seemed needlessly elaborate using many words with comparatively little substance.
The other thread in the book is showing code samples presenting various tools in the standard library to implement those, like mailbox processors in F# or TPL. This was comparatively the strongest suit of the book.
Both threads suffered considerably from poor editing. It was so bizarre, I had to double check if I wasn't reading early access edition. I wasn't. This includes swapping descriptions of parts of the source code, text referring to aspects of code samples that weren't there, as well as confused descriptions of some of the basic concepts, e.g., accumulator as used in functional implementations of various recursive algorithms.
My favourite will probably remain expression of "performance and speed," appearing several times in one of the chapters, as if they were different things. There was nothing in the book or that chapter suggesting that should be the case.
I had read a number of Manning books, and I was never disappointed, but this is beneath my basic expectations towards a book on technical subject.
Then again, I don't think I would give it more than 3 stars regardless. The Java-related book I mentioned earlier made a point of explaining to the reader some basic principles that they could use to implement their own concurrency primitives. While some of it is actually present here as well, it lacks presentation of fundamentals, like how virtual machine's memory model interacts with concurrency.
In that way, this book seemed to lack depth outside of the code samples.