Principles and Practice of Concurrent Programming
Scott Brookhart
The Art of Multiprocessor Programming, Maurice Herlihy and Nir Shavit, Morgan Kaufmann Publishers, 2008, ISBN-13: 978-0-12-370591-4, 508 pp.
Computing students and practitioners alike understand that Moore’s law is moving the industry toward multiple processors. Programmers who want to keep pace with the historical increases in computing speed must have a grasp of multiprocessor or concurrent programming. We can no longer ignore programming’s threaded aspects.
Both Maurice Herlihy and Nir Shavit are professors at fine universities and recipients of distinguished computer science awards. In The Art of Multiprocessor Programming, they’ve written a solid introduction to concurrent programming. The first third of the book explains fundamental terms and ideas so that readers can follow the techniques presented in the rest of book. The techniques cover concurrent programming practice—highlighting algorithms, patterns, synchronization, data structures, and other aspects of the practice with a focus on performance.
I’ve purchased several good books on concurrent programming, but I believe this one covers the subject in an evolutionary way that makes it better than the others I’ve read. It sets readers up to think like a concurrent programmer before introducing them to practices that would otherwise be difficult to understand. It builds up to the subject rather than jumping into it, and it’s comprehensive. Practitioners already familiar with the foundations can skim or skip the first few chapters and go directly to topics such as transactional memory, counting networks, and barriers—all of which are well described with examples.
The book is intended for upper division undergraduates and professionals who wish to better understand and realize the performance potential of concurrent programming. The code samples are primarily in Java with full explanations for those less familiar with the language—although I can’t imagine who that would be at this level. The explanations are very useful, and the algorithms are valuable additions to every developer’s cache of skills.
The Art of Multiprocessor Programming is for developers who see the need to adopt concurrent programming practices for greater performance in a multiprocessor marketplace. It will help anyone who writes code understand how to formulate programs with concurrent features, and I highly recommend it.
Scott Brookhart is a software engineer. Contact him at sbrookhart@alumni.utexas.net.