Concurrent Programming on Windows: Architecture, Principles, and Patterns (Microsoft .Net Development)
Concurrent Programming on Windows: Architecture, Principles, and Patterns (Microsoft .Net Development) by Herb Sutter and Joe Duffy
- Binding:
- Paperback
- Number of Pages:
- 1008
- ISBN:
- 032143482X
- Product Group:
- book
- Publisher:
- Addison Wesley
- Publication Date:
- Nov. 6, 2008
- BooksForGeeks.com ID:
- 367
Reviews for Concurrent Programming on Windows: Architecture, Principles, and Patterns (Microsoft .Net Development)
-
A very thorough reference
Rated out of 5 stars, August 12th, 2009
This book is extremely thorough reference detailing minute details of concurrent programming on Windows. Author not only discusses high level .NET mechanisms but also underlying OS/kernel primitives.
Frequent references to C/C++ or even assembler may make it difficult to .NET only developers. As it is packed with rather in depth information it is not an easy read, so if you are looking for a quick "how to" guide this book may not be ideal.
I highly recommended it if you want to dive deeper than what's available in .NET framework library. If you read it it's going to be probably the last book on the subject that you will ever have to read. -
The most in-depth book on Windows you will ever read
Rated out of 5 stars, June 12rd, 2009
There are a couple of things it is worth knowing about this book before you buy it. Firstly although it is in the .Net development series it is of far more use to those working in the unmanaged world, the second is that it is over 1000 pages in length and is not a reference book as much as a technical journey of discovery. You will need to read this cover to cover to get much out of it.
Although split into 4 sections you can really think of this as 2 books, sections 1 and 2 are a guide to threading on Windows, sections 3 and 4 cover concurrent programming techniques.
Even if you have been programming on Windows for years and consider yourself au-fait with threading you will be amazed at the breadth and depth of information in the guide to threading. There is low level detail on everything from thread local storage to thread pools (both managed and unmanaged) and a lot of coverage of additional kernal level functions available only to unmanaged developers working in Vista or Server 2008.
The book covers ways to utilise multiple CPU's, ways to measure utilisation and low level knowledge that one can apply to write perfomant code, having used many of the techniques myself they do work and it is eye opening quite how much faster you can make many sever operations. Maybe the most eye opening element is details on the re-ordering that compilers do, especially on 64bit processors, there is discussion of use of memory barriers to force operation ordering.
By now I am sure you get the impression, this is low level stuff, very useful to those working on c++ server code, possibly less applicable to most .Net developers.
The real flaw with the guide to threading section is that there is no adequate index or contents section and that each chapter does not contain a summary of what is covered, this makes using the book as a reference unnecessarily time consuming.
The concurrent programming techniques, section 3 and 4 and appendices, is a bit hit and miss in my opinion, there is a fine discussion of liveness hazards (deadlocks and livelock etc.) and low lock code, but some of the stuff on data / task parallelism seems a little simplistic for a book at this level. The last section on GUI development basically be summarised as don't do too much work on the GUI thread, which if you have got this far in the book I think you would know.
Although the concurrent programming techniques section is more applied than the first half of the book don't expect to lift many code samples from it, it's really not that kind of book.
To summarise, if you want to know the low level details of threading / parallelism on windows and you have a lot of time to read one then this is the book for you. If you want a multi-threading cookbook best look elsewhere.

