Paul E. McKenney has posted a work-in-progress version of his book, Is Parallel Programming Hard, And, If So, What Can You Do About It?
The purpose of this book is to help you understand how to program shared-memory parallel machines without risking your sanity. By describing the algorithms and designs that have worked well in the past, we hope to help you avoid at least some of the pitfalls that have beset parallel projects. But you should think of this book as a foundation on which to build, rather than as a completed cathedral. Your mission, if you choose to accept, is to help make further progress in the exciting ﬁeld of parallel programming, progress that should in time render this book obsolete. Parallel programming is not as hard as it is reputed, and it is hoped that this book makes it even easier for you.