Selecting locking designs for parallel programs
Paul E. McKenney · 1996
Parallelizing a program can greatly speed it up. However, the synchronization primitives needed to protect shared resources result in contention, overhead, and added complexity. These costs can overwhelm the performance benefits of parallel execution. Since the only reason to go to the trouble of parallelizing a program is to gain performance, it is necessary to understand the performance implications of synchronization primitives in addition to their correctness, liveness, and safety properties.