When I first heard about this book I almost bought it sight unseen, on the basis of a very favourable review of a previous work by the same authors. In retrospect I am glad I did not.
This book describes tools and techniques for parallel and distributed programming on Unix and Linux systems, using C++ as implementation language and focusing on standard API's and freely available libraries. These are the standard Unix process management API, Posix threads, PVM (Parallel Virtual Machine), MPI (Message Passing Interface) and CORBA. Note that, with the exception of CORBA, all these libraries only provide a C interface so most of the examples for this part of the book do not really contain C++ specific techniques.
Additional chapters are devoted to a theoretical introduction to parallel and distributed programming, error and exception handling, agent oriented and blackboard architectures and UML. Such a wide range of topics makes it impossible to cover any of them thoroughly; in my opinion it would have been better to concentrate on a more limited selection in favour of a deeper treatment. There is also an appendix that contains the full Posix Threads standard reference, which in my opinion could have been omitted.
The book's most evident defect is the very inaccurate, almost sloppy, way in which it is written; to the extent that I cannot help feeling that an early draft went to print by mistake. It is riddled with errors, from typos, to grammar ones, to technical ones. A few examples: very often a singular pronoun is used to refer to a plural subject; in almost all the code examples standard library entities are used without namespace qualification and without using declarations or directives; in the chapter on exceptions it is stated that C++ exception specifications are checked at compile time, while the language standard requires that they be enforced at runtime.
The authors write in short sentences, but this is not enough to make the text clear and in my opinion some important notions are not well explained; for instance I haven't understood what they think the difference is between parallel and distributed programming. The code examples are not good either; most of them are only program fragments that cannot be compiled and the few complete programs do not perform any interesting task, thus failing to support the reader in mastering the topics they should illustrate.
I found this book very disappointing, especially because nowadays publishers tend to concentrate on fashionable topics, thus publishing books that date quickly. I feel that an important opportunity has been badly missed. It is a pity because it is clear that a lot of effort went into this book, yet a lot more is required to turn it into a worthwhile one.