The Art of Concurrency:

Author: Clay Breshears
Publisher: O'Reilly, 2009
Pages: 302

ISBN: 978-0596521530
Aimed at: C/C++ developers
Rating: 3.5
Pros: Useful introduction to classical parallel algorithms  in C++
Cons: Doesn't deal with concurrency
Reviewed by: Mike James

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.

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.



Last Updated ( Thursday, 17 September 2009 )