The Art of Concurrency: A Thread Monkey's Guide to Writing Parallel Applications

Front Cover
"O'Reilly Media, Inc.", May 7, 2009 - Computers - 304 pages

If you're looking to take full advantage of multi-core processors with concurrent programming, this practical book provides the knowledge and hands-on experience you need. The Art of Concurrency is one of the few resources to focus on implementing algorithms in the shared-memory model of multi-core processors, rather than just theoretical models or distributed-memory architectures. The book provides detailed explanations and usable samples to help you transform algorithms from serial to parallel code, along with advice and analysis for avoiding mistakes that programmers typically make when first attempting these computations.

Written by an Intel engineer with over two decades of parallel and concurrent programming experience, this book will help you:

  • Understand parallelism and concurrency
  • Explore differences between programming for shared-memory and distributed-memory
  • Learn guidelines for designing multithreaded applications, including testing and tuning
  • Discover how to make best use of different threading libraries, including Windows threads, POSIX threads, OpenMP, and Intel Threading Building Blocks
  • Explore how to implement concurrent algorithms that involve sorting, searching, graphs, and other practical computations

The Art of Concurrency shows you how to keep algorithms scalable to take advantage of new processors with even more cores. For developing parallel code algorithms for concurrent programming, this book is a must.

 

Contents

Chapter 2 Concurrent or Not Concurrent?
21
Chapter 3 Proving Correctness and Measuring Performance
49
Chapter 4 Eight Simple Rules for Designing Multithreaded Applications
73
Chapter 5 Threading Libraries
81
Chapter 6 Parallel Sum and Prefix Scan
95
Chapter 7 MapReduce
125
Chapter 8 Sorting
145
Chapter 9 Searching
201
Chapter 10 Graph Algorithms
221
Chapter 11 Threading Tools
257
Glossary
265
Photo Credits
275
Index
277
Copyright

Other editions - View all

Common terms and phrases

About the author (2009)

Clay Breshears has been with Intel since September 2000. He started as a Senior Parallel Application Engineer at the Intel Parallel Applications Center in Champaign, IL, implementing multithreaded and distributed solutions in customer applications. Clay is currently a Course Architect for the Intel Software College, specializing in multi-core and multithreaded programming and training. Before joining Intel, Clay was a Research Scientist at Rice University helping Department of Defense researchers make best use ofthe latest High Performance Computing (HPC) platforms and resources. Clay received his Ph.D. in Computer Science from the University of Tennessee, Knoxville, in 1996, but has been involved with parallel computation and programming for over twenty years; six of those years were spent in academia at Eastern Washington University and The University of Southern Mississippi.

Bibliographic information