Professional Multicore Programming: Design and Implementation for C++ Developers presents the basics of multicore programming in a simple, easy-to-understand manner so that you can easily apply the concepts to your everyday projects. Learn the fundamentals of programming for multiprocessor and multithreaded architecture, progress to multi-core programming and eventually become comfortable with programming techniques that otherwise can be difficult to understand. Anticipate the pitfalls and traps of concurrency programming and synchronization before you encounter them yourself by finding them outlined in this indispensable guide to multicore programming.
This is a decent introduction to multiprocessing that uses the POSIX API and covers using processes as well as threads for multiprocessing, but won't truly satisfy more advanced programmers who already know multiprocessing basics. It covers the major challenges, provides design suggestions on tackling threading from a top down application perspective, and a very light introduction to using UML to model concurrent components. It presents the Multiagent and Blackboard architecture but doesn't really discuss any other approaches.
The coverage of different processor architectures such as AMD's Opteron, IBM's Cell, Intel's Core 2 Duo, and Sun's UltraSparc T1 is brief and shallow.
The book is padded with 165 filler pages (over 25%), unnecessarily replicating the pthreads API documentation in an appendix.
Working through this book too. Have three major environments in which I test the knowledge gained here. MAX OS with GCC, Windows with Visual Studio and AIX.