A Lightweight Synchronization Mechanism for Concurrent Programming

Alexander Matveev, Nir Shavit, Pascal A. Felber, Patrick Marlier · 2015

This paper introduces read-log-update (RLU), a novel extension of the popular read-copyupdate (RCU) synchronization mechanism that supports scalability of concurrent code by allowing unsynchronized sequences of reads to execute concurrently with updates. RLU overcomes the major limitations of RCU by allowing, for the first time, concurrency of reads with multiple writers, and providing automation that eliminates most of the programming difficulty associated with RCU programming. At the core of the RLU design is a logging and coordination mechanism inspired by software transactional memory algorithms. In a collection of micro-benchmarks in both the kernel and user space, we show that RLU both simplifies the code and matches or improves on the performance of RCU. As an example of its power, we show how it readily scales the performance of a realworld application, Kyoto Cabinet, a truly difficult concurrent programming feat to attempt in general, and in particular with classic RCU.

Read the paper · More papers on PaperTik