The art of multiprocessor programming

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...

Descripción completa

Detalles Bibliográficos
Autor principal: Herlihy, Maurice (-)
Otros Autores: Shavit, Nir, 1959-
Formato: Libro electrónico
Idioma:Inglés
Publicado: Amsterdam : Elsevier/Morgan Kaufmann 2012.
Edición:Rev. 1st ed
Materias:
Ver en Biblioteca Universitat Ramon Llull:https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009628836606719
Tabla de Contenidos:
  • Dedication
  • Table of Contents
  • Acknowledgments
  • Preface
  • Suggested Ways to Teach the Art of Multiprocessor Programming
  • Preface
  • Practitioner Track
  • Non-CS Major Track
  • CS Major Track
  • 1 Introduction
  • 1.1 Shared Objects and Synchronization
  • 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
  • 1.8 Exercises
  • 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
  • 2.10 Exercises
  • 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
  • 3.11 Exercises
  • 4 Foundations of Shared Memory
  • 4.1 The Space of Registers
  • 4.2 Register Constructions
  • 4.3 Atomic Snapshots
  • 4.4 Chapter Notes
  • 4.5 Exercises
  • 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 Common 2 RMW Operations
  • 5.8 The compareAndSet() Operation
  • 5.9 Chapter Notes
  • 5.10 Exercises
  • 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
  • 6.6 Exercises
  • II. Practice
  • 7 Spin Locks and Contention
  • 7.1 Welcome to the Real World
  • 7.2 Test-And-Set Locks
  • 7.3 TAS-Based Spin Locks Revisited
  • 7.4 Exponential Backoff
  • 7.5 Queue Locks
  • 7.6 A Queue Lock with Timeouts
  • 7.7 A Composite Lock
  • 7.7.1 A Fast-Path Composite Lock
  • 7.8 Hierarchical Locks
  • 7.9 One Lock To Rule Them All
  • 7.10 Chapter Notes
  • 7.11 Exercises
  • 8 Monitors and Blocking Synchronization
  • 9 Linked Lists: The Role of Locking
  • 10 Concurrent Queues and the ABA Problem
  • 11 Concurrent Stacks and Elimination
  • 12 Counting, Sorting, and Distributed Coordination
  • 13 Concurrent Hashing and Natural Parallelism
  • 14 Skip lists and Balanced Search
  • 15 Priority Queues
  • 16 Futures, Scheduling, and Work Distribution
  • 17 Barriers
  • 18 Transactional Memory
  • III. Appendix
  • Bibliography
  • Index.