The Art of Multiprocessor Programming / Edition 1by Maurice Herlihy, Nir Shavit
Pub. Date: 03/14/2008
Publisher: Elsevier Science
As the computer industry changes from single-processor to multiprocessor architectures, this revolution requires a fundamental change in how programs are written. To leverage the performance and power of multiprocessor programming, also known as multicore programming, you need to learn the new principles, algorithms, and tools presented in this book. It includes
As the computer industry changes from single-processor to multiprocessor architectures, this revolution requires a fundamental change in how programs are written. To leverage the performance and power of multiprocessor programming, also known as multicore programming, you need to learn the new principles, algorithms, and tools presented in this book. It includes fully-developed Java examples detailing data structures, synchronization techniques, transactional memory, and more.
Prof. Maurice Herlihy, who coined the phrase "transactional memory," is on the faculty of Brown University. He is the recipient of the 2003 Dijkstra Prize in distributed computing. Prof. Nir Shavit is on the faculty of Tel-Aviv University and a member of the technical staff at Sun Microsystems Laboratories. In 2004 they shared the Gödel Prize, the highest award in theoretical computer science.
- The book on multicore programming, the new paradigm of computer science
- Written by the world's most revered experts in multiprocessor programming and performance
- Includes examples, models, exercises, PowerPoint slides, and sample Java programs
- Elsevier Science
- Publication date:
- Edition description:
- New Edition
- Product dimensions:
- 1.07(w) x 7.50(h) x 9.25(d)
Table of Contents
1 Introduction; 2 Mutual Exclusion; 3 Concurrent Objects and Linearization; 4 Foundations of Shared Memory; 5 The Relative Power of Synchronization Methods; 6 The Universality of Consensus; 7 Spin Locks and Contention; 8 Monitors and Blocking Sychronization; 9 Linked Lists: the Role of Locking; 10 Concurrent Queues and the ABA Problem; 11 Concurrent Stakcs and Elimination; 12 Counting, Sorting and Distributed Coordinatino; 13 Concurrent Hashing and Natural Parallelism; 14 Skiplists and Balanced Search; 15 Priority Queues; 16 Futures, Scheduling and Work Distribution; 17 Barriers; 18 Transactional Memory; Appendices
and post it to your social network
Most Helpful Customer Reviews
See all customer reviews >
The Art of Multiprocessor Programming is a foundation textbook for a large subject with both theory and practical considerations. It is not a programmer's guide or an application cookbook. Instead it addresses the fundamental problem of concurrent execution within a single program with a shared data space. Then it develops real techniques and explores the issues as they apply to real instruction sets and practical memory architectures of real machines. It introduces and illustrates the fundamental issues, and teaches the student how to think about the problem. Note "student", not "reader." This is not a book to read; it is a book to do. There is a fair amount of theory to gain experience with. The problem sets, while not large, are well chosen. The program illustrations are in Java, and have mistakes whose corrections can be found in online errata. The Art of Multiprocessor Programming will not help you get code past a compiler or pass an exam on Pthreads. But it may help you avoid hard-to-find bugs, and to avoid costly bottlenecks in concurrent programs.
Most books out there will give you a bunch of coding, and break it down for you, showing you how it works; I consider most of these part of the "how-to" category. This book, on the other hand, is unique in that it actually teaches the concepts that are used in multi-processor (concurrent/parallel) programming, which is different than multi-threaded programming. It is not a reference book which teaches you what kind of coding to put in your programs to enable parallel programming (of which such an endeavor is close to impossible with such a highly complex subject matter as this), but it will teach you what parallel programming means and how one would go about creating programs that can use multiple streams of processing to collectively work on a single task. While you'd be hard-pressed to find any sort of working excerpt of code in this book; it does a great job explaining how parallel programming works through the use of clever analogies and light, unburdened pseudo-coding. I don't recommend this book for anyone who is interested in a "quick learn" kind of environment. This book is meant for one to deeply understand the underlying subject and spend ample time thinking through and mentally reasoning through the exercises. The subject level of this book would most likely be collegiate level, but do not fear, for the mathematics in this book are not overly complex. A foreknowledge of multi-threading does help, but is not required. Lastly, I have not seen a book like this in my entire career of computer science. What this book offers, no other book will offer. The knowledge within contains decades of collective experience from brilliant minds in the field of computing.