Author: Clay Breshears
Publisher: O'Reilly, 2009
The subtitle of this book - A Thread Monkey's Guide to Writing Parallel Applications - might lead you to believe that it about the nitty gritty practical concerns of threading. In fact the book is a fairly traditional account of parallelism using Posix threads, OpenMP, Windows threads and Intel Threading Building Blocks. Most of the code presented is in C++ but it's really just C, as objects don't play a big role. Which particular library is used in the examples seems to be more or less random.
Aimed at: C/C++ developers
Pros: Useful introduction to classical parallel algorithms in C++
Cons: Doesn't deal with concurrency
Reviewed by: Mike James
While the subject matter is generally the traditional academic fare the presentation is informal but with the addition of lots of references to the authority of a few textbooks.
If you are looking for a book that deals with the way that concurrency occurs in programs that are not overtly parallel, e.g. a worker thread that has to interact with objects that belong to a UI thread, then you are going to be disappointed. This book isn't really about helping the programmer forced to consider concurrency or wanting to add some concurrency to make a general application more responsive.
However if you are interested in real parallel algorithms then you might find it more useful. After a consideration of what make parallelism difficult the book moves on to consider proving correctness. Then we have eight simple rules for concurrency and a look at some concurrency libraries. At this point the book moves on to consider the standard parallel algorithms - MapReduce, sorting, searching and graph algorithms finishing up with a look at some parallel tools. Notable omissions are anything on Microsoft's attempt to introduce parallelism into .NET and any higher level approach to the problem - e.g Hadoop isn't mentioned as a way of implementing MapReduce.
If you want an introduction to classical parallel algorithms and techniques in C++ using the libraries mentioned above, this book is useful.