Not for the neophyte. The material being covered was done in a manner that assumed a familiarity with underlying concepts. There were some useful pieces of information within the text but there were also some inaccuracies as well.
Some of the information given seems to be technically incorrect or misleading. For instance the section "What Is A Thread" in Chapter 2 is not strictly correct when applied to Linux; this system does not have threads in the scheme presented. There is a paragraph that starts:
"Therefore, all modern operating systems support the subdivision of processes into multiple threads of execution."
As a number Linux distributions still have no native thread concept but utilise lightweight processes this is a sweeping and technically incorrect statement. Yes threading packages do exist but they are by no means used exclusively.
The next area of information that glosses over some very technical information is the one that deals with cache aligned memory allocation in Chapter 6. The organisation of processor caches is highly architecture specific, so to include the following "The padding is typically 128 bytes" without reference to any silicon architectural implementation could be construed as dangerous. If information relating to lower levels of the hardware are to be given then they should be done so with very specific and concrete examples.
The reproduction of the class definitions within the text of the publication does not seem 100% relevant as should someone have this book they should also have the help files for the library to hand. Or, failing that, the actual header files themselves. The inclusion of one or two function signatures to show how to override them is a useful feature, as was done when illustrating what standard memory allocation routines to replace.
The examples covered a good range of how to apply the building blocks to a number of familiar problems. In fact it may have been far better had the book been structured to have more examples at the point of the introduction of a new concept or programming structure to fix it in the mind of the reader.
I realise that the book is "Intel Threading Building Blocks" and so a certain number of the points mentioned should have been implicit, e.g. processor architecture. However, I think that as the book raised these issues it should have been very careful to define its frame of reference.
Overall, while the book contained useful information I did not feel it covered enough outwith what is publicly available or with the building block library to make it useful in the medium to long term.
Table of contents
Intel Threading Building Blocks Ch 1. Why Threading Building Blocks? Ch 2. Thinking Parallel Ch 3. Basic Algorithms Ch 4. Advanced Algorithms Ch 5. Containers Ch 6. Scalable Memory Allocation Ch 7. Mutual Exclusion Ch 8. Timing Ch 9. Task Scheduler Ch 10. Keys to Success Ch 11. Examples Ch 12. History and Related Projects