Professional Multicore Programming:

Design and Implementation for C++ Developers

Published by:

Wrox (Owned by John Wiley & Sons)

Paperback: 648 pages

Publication Date: September 9, 2008

Language: English

ISBN-10: 0470289627

ISBN-13: 978-0470289624

Manufactured in the United States of America


The multicore revolution is at hand. Parallel processing is no longer the exclusive domain of supercomputers or clusters. The entry - level server and even the basic developer workstation have the capacity for hardware - and software - level parallel processing. The question is what does this mean for the software developer and what impact will it have on the software development process? In the race for who has the fastest computer, it is now more attractive for chip manufacturers to place multiple processors on a single chip than it is to increase the speed of the processor. Until now the software developer could rely on the next new processor to speed up the software without having to make any actual improvements to the software. Those days are gone. To increase overall system performance, computer manufacturers have decided to add more processors rather than increase clock frequency. This means if the software developer wants the application to benefit from the next new processor, the application will have to be modified to exploit multiprocessor computers. Although sequential programming and single core application development have a place and will

remain with us, the landscape of software development now reflects a shift toward multithreading and multiprocessing. Parallel programming techniques that were once only the concern of theoretical computer scientists and university academics are in the process of being reworked for the masses. The ideas of multicore application design and development are now a concern for the mainstream.


Our book Professional Multicore Programming: Design and Implementation for C++ Developers presents the ABCs of multicore programming in terms the average working software developer can understand. We introduce the reader to the everyday fundamentals of programming for multiprocessor and

multithreaded architectures. We provide a practical yet gentle introduction to the notions of parallel processing and software concurrency. This book takes complicated, almost unapproachable, parallel programming techniques and presents them in a simple, understandable manner. We address the pitfalls and traps of concurrency programming and synchronization. We provide a no - nonsense discussion of multiprocessing and multithreading models. This book provides numerous programming examples that demonstrate how successful multicore programming is done. We also include methods

and techniques for debugging and testing multicore programming. Finally, we demonstrate how to take advantage of processor specific features using cross - platform techniques.


Chapter 1: The New Architecture

Chapter 2: Four Effective Multicore Designs Chapter 3: The Challenges of Multicore Programming

Chapter 4: The Operating System’s Role Chapter 5: Processes, C++ Interface

Classes, and Predicates

Chapter 6: Multithreading

Chapter 7: Communication and Synchronization of Concurrent Tasks

Chapter 8: PADL and PBS: Approaches to Application Design

Chapter 9: Modeling Software Systems

That Require Concurrency

Chapter 10: Testing and Logical Fault Tolerance for Parallel Programs

Appendix A: Tools UsedIndex

Book Index