Description

Revised and updated with improvements conceived in parallel programming courses, The Art of Multiprocessor Programming is an authoritative guide to multicore programming. It introduces a higher level set of software development skills than that needed for efficient single-core programming. This book provides comprehensive coverage of the new principles, algorithms, and tools necessary for effective multiprocessor programming. Students and professionals alike will benefit from thorough coverage of key multiprocessor programming issues.

Key Features

  • This revised edition incorporates much-demanded updates throughout the book, based on feedback and corrections reported from classrooms since 2008
  • Learn the fundamentals of programming multiple threads accessing shared memory
  • Explore mainstream concurrent data structures and the key elements of their design, as well as synchronization techniques from simple locks to transactional memory systems
  • Visit the companion site and download source code, example Java programs, and materials to support and enhance the learning experience

Readership

Students in multiprocessor and multicore programming courses and engineers working with multiprocessor and multicore systems.

Table of Contents

Dedication

Acknowledgments

Product Note

Preface

Suggested Ways to Teach the Art of Multiprocessor Programming

1. Introduction

1.1 Shared Objects and Synchronization

1.2 A Fable

1.3 The Producer–Consumer Problem

1.4 The Readers–Writers Problem

1.5 The Harsh Realities of Parallelization

1.6 Parallel Programming

1.7 Chapter Notes

I Principles

2. Mutual Exclusion

2.1 Time

2.2 Critical Sections

2.3 2-Thread Solutions

2.4 The Filter Lock

2.5 Fairness

2.6 Lamport’s Bakery Algorithm

2.7 Bounded Timestamps

2.8 Lower Bounds on the Number of Locations

2.9 Chapter Notes

3. Concurrent Objects

3.1 Concurrency and Correctness

3.2 Sequential Objects

3.3 Quiescent Consistency

3.4 Sequential Consistency

3.5 Linearizability

3.6 Formal Definitions

3.7 Progress Conditions

3.8 The Java Memory Model

3.9 Remarks

3.10 Chapter Notes

4. Foundations of Shared Memory

4.1 The Space of Registers

4.2 Register Constructions

4.3 Atomic Snapshots

4.4 Chapter Notes

5. The Relative Power of Primitive Synchronization Operations

5.1 Consensus Numbers

5.2 Atomic Registers

5.3 Consensus Protocols

5.4 FIFO Queues

5.5 Multiple Assignment Objects

5.6 Read–Modify–Write Operations

5.7 Common2 RMW Operations

5.8 The compareAndSet() Operation

5.9 Chapter Notes

6. Universality of Consensus

6.1 Introduction

6.2 Universality

6.3 A Lock-Free Universal Construction

6.4 A Wait-Free Universal Construction

6.5 Chapter Notes

II Practice

7. Spin Locks and Contention

7.1 Welcome to the Real World

7.2 Test-And-Set Locks

Details

No. of pages:
536
Language:
English
Copyright:
© 2012
Published:
Imprint:
Morgan Kaufmann
Electronic ISBN:
9780123977953
Print ISBN:
9780123973375

About the authors

Maurice Herlihy

Maurice Herlihy received an A.B. in Mathematics from Harvard University, and a Ph.D. in Computer Science from M.I.T. He has served on the faculty of Carnegie Mellon University, on the staff of DEC Cambridge Research Lab, and is currently a Professor in the Computer Science Department at Brown University. Maurice Herlihy is an ACM Fellow, and is the recipient of the 2003 Dijkstra Prize in Distributed Computing. He shared the 2004 Gödel Prize with Nir Shavit, the highest award in theoretical computer science. In 2012 he shared the Edsger W. Dijkstra Prize In Distributed Computing with Nir Shavit.

Nir Shavit

Nir Shavit received a B.A. and M.Sc. from the Technion and a Ph.D. from the Hebrew University, all in Computer Science. From 1999 to 2011 he served as a member of technical staff at Sun Labs and Oracle Labs. He shared the 2004 Gödel Prize with Maurice Herlihy, the highest award in theoretical computer science. He is a Professor in the Electrical Engineering and Computer Science Department at M.I.T. and the Computer Science Department at Tel-Aviv University. In 2012 he shared the Edsger W. Dijkstra Prize In Distributed Computing with Maurice Herlihy.

Reviews

"The book could be used for a short course for practitioners looking for solutions to particular problems, a medium course for non-computer science major who would use multiprocessor programming in their own field, or a semester-long course for computer science majors." --Reference and Research Book News