Title | ||
---|---|---|
Versioned Programming: A Simple Technique for Implementing Efficient, Lock-Free, and Composable Data Structures. |
Abstract | ||
---|---|---|
This paper introduces versioned programming, a technique that can be used to convert pointer-based data structures into efficient, lock-free implementations. Versioned programming allows arbitrary composition of pointer modifications. Taking linked-lists as an example, VLISTs, or versioned lists, support features missing in other lock-free implementations, such as double linking and atomic moves among lists. The main idea of versioning is to allow different versions of a nodes exist at the same time such that each thread can pick the appropriate version and has a consistent view of the whole data structure. We present a detailed example of VLISTs, simple enough to include all code inline. The paper also evaluates versioned tree implementations. We evaluate versioned programming against several concurrency techniques. With a modest number of writers, versioned programming outperforms read-log-update, which locks nodes. VLIST out-perform lists with SwissTM, a highquality STM, showing the value of trading some programmer-transparency for performance. Composability hurts performance compared to a non-composable, hand-written lock-free algorithm. Using the technique described in this paper, application developers can have both the performance scalability of sophisticated synchronization techniques with functionality and simplicity comparable to coarse locks. |
Year | DOI | Venue |
---|---|---|
2016 | 10.1145/2928275.2928285 | SYSTOR |
Keywords | Field | DocType |
Concurrent Programming, Lock-Free Data Structures, Versioned Programming | Pointer (computer programming),Data structure,Programming language,Computer science,Non-blocking algorithm,Concurrency,Parallel computing,Thread (computing),Concurrent computing,Composability,Scalability | Conference |
Citations | PageRank | References |
1 | 0.34 | 26 |
Authors | ||
2 |
Name | Order | Citations | PageRank |
---|---|---|---|
Yang Zhan | 1 | 65 | 6.65 |
Donald E. Porter | 2 | 389 | 32.25 |