Channels ▼

Developer's Reading List

, October 23, 2012 New books on C++11, parallel programming, CoffeeScript, requirements, and more.
  • E-mail
  • Print

The Art of Multiprocessor Programming, Revised 1st Ed.

by Maurice Herlihy and Nir Shavit

I was the lead author on one of the early books on multithreaded programming, so I have some personal experience with the difficulties of explaining this particular domain. One of the great challenges is determining how many different domains to travel to explain how parallel operations work. The authors do a remarkably thorough job of this. After introducing all the standard concepts, they apply them to numerous data structures: linked lists, skiplists, queues of all kinds, and stacks. (Unfortunately, trees — which have their own unique concurrency issues — are not covered at all. Nonetheless, the principal feature of mutual exclusion in trees, hierarchical locks, is explained well.) The book also covers software transactional memory (STM), which is a topic often omitted in concurrency texts.

The explanations are lucid, interesting, and approachable. The supporting code is in Java, and an appendix discusses the necessary changes for C# and C. The code, however, is the Achilles' heel of this work. The first edition, before this revision appeared, contained numerous errors in code. While those have been corrected, the revised code still contains infelicities. Some code contains unused variables. Opposing coding conventions are used in various examples. Some code is heavily commented, other non-obvious code has no explanation. The downloadable files contain extraneous artifacts (like cvsignore files and the like). So while the text reveals care and clarity, the code shows a surprising lack of care, almost an impatience. For the explanations in this book, I can conditionally recommend it. However, if you want a book on parallel programming in Java, with fewer theoretical explanations but correct code, the definitive text is Java Concurrency in Practice by Brian Goetz et al.

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.