Concurrent Data Structures Made Easy
Callista Le, Kiran Gopinathan, Koon Wen Lee, Seth Gilbert, Ilya Sergey
Abstract
Design of an efficient thread-safe concurrent data structure is a balancing act between its implementation complexity and performance. Lock-based concurrent data structures, which are relatively easy to derive from their sequential counterparts and to prove thread-safe, suffer from poor throughput under even light multi-threaded workload. At the same time, lock-free concurrent structures allow for high throughput, but are notoriously difficult to get right and require careful reasoning to formally establish their correctness.
In this work, we explore a solution to this conundrum based on a relatively old idea of batch parallelism-an approach for designing high-throughput concurrent data structures via a simple insight: efficiently processing a batch of a priori known operations in parallel is easier than optimising performance for a stream of arbitrary asynchronous requests. Alas, batch-parallel structures have not seen wide practical adoption due to (𝑖) the inconvenience of having to structure multi-threaded programs to explicitly group operations and (𝑖𝑖) the lack of a systematic methodology to implement batch-parallel structures as simply as lock-based ones.
We present OBatcher-a Multicore OCaml library that streamlines the design, implementation, and usage of batch-parallel structures. It solves the first challenge (how to use) by suggesting a new lightweight implicit batching design that is built on top of generic asynchronous programming mechanisms. The second challenge (how to implement) is addressed by identifying a family of strategies for converting common sequential structures into efficient batch-parallel ones, and by providing functors that embody those strategies. We showcase OBatcher with a diverse set of benchmarks. Our evaluation of all the implementations on large asynchronous workloads shows that (a) they consistently outperform the corresponding coarse-grained lock-based implementations and that (b) their throughput scales reasonably with the number of processors.
CCS Concepts: • Computing methodologies → Concurrent algorithms.
Ask about this paper
Your agent reads all of it.
Lune indexed this paper to the last equation, along with the top-tier papers that cite it. Ask a question and the answer quotes them.
Your agent calls
Luneget_paper_fulltext
Free to start. No credit card required.
Terminal
Install the CLIlune papers fulltext 9ab74b89-4a7f-4c22-8076-bfafdb4feb02Builds on9
- Retrofitting effect handlers onto OCamlK. C. Sivaramakrishnan, Stephen Dolan, Leo White, Tom Kelly et al.PLDI 2021 · 56 citations
- Non-blocking interpolation search trees with doubly-logarithmic running timeTrevor Brown, Aleksandar Prokopec, Dan AlistarhPPoPP 2020 · 29 citations
- Parallel Batch-Dynamic Graphs: Algorithms and Lower BoundsLaxman Dhulipala, David Durfee, Janardhan Kulkarni, Richard Peng et al.SODA 2020 · 28 citations
- Diaframe: automated verification of fine-grained concurrent programs in IrisIke Mulder, Robbert Krebbers, Herman GeuversPLDI 2022 · 27 citations
- Proving highly-concurrent traversals correctYotam M. Y. Feldman, Artem Khyzha, Constantin Enea, Adam Morrison et al.OOPSLA 2020 · 12 citations
Related papers
- A wait-free universal construction for large objectsAndreia Correia, Pedro Ramalhete, Pascal FelberPPoPP 2020 · 12 citations
- MxTasks: How to Make Efficient Synchronization and Prefetching EasyJan Mühlig, Jens TeubnerSIGMOD 2021 · 11 citations
- Snoopy: Surpassing the Scalability Bottleneck of Oblivious StorageEmma Dauterman, Vivian Fang, Ioannis Demertzis, Natacha Crooks et al.SOSP 2021 · 26 citations
- CQS: A Formally-Verified Framework for Fair and Abortable SynchronizationNikita Koval, Dmitry Khalanskiy, Dan AlistarhPLDI 2023 · 1 citation
- Scalable Address Spaces using Concurrent Interval SkiplistTae Woo Kim, Youngjin Kwon, Jeehoon KangSOSP 2025
