English

Pragmatic Primitives for Non-blocking Data Structures

Distributed, Parallel, and Cluster Computing 2017-12-20 v1

Abstract

We define a new set of primitive operations that greatly simplify the implementation of non-blocking data structures in asynchronous shared-memory systems. The new operations operate on a set of Data-records, each of which contains multiple fields. The operations are generalizations of the well-known load-link (LL) and store-conditional (SC) operations called LLX and SCX. The LLX operation takes a snapshot of one Data-record. An SCX operation by a process pp succeeds only if no Data-record in a specified set has been changed since pp last performed an LLX on it. If successful, the SCX atomically updates one specific field of a Data-record in the set and prevents any future changes to some specified subset of those Data-records. We provide a provably correct implementation of these new primitives from single-word compare-and-swap. As a simple example, we show how to implement a non-blocking multiset data structure in a straightforward way using LLX and SCX.

Keywords

Cite

@article{arxiv.1712.06688,
  title  = {Pragmatic Primitives for Non-blocking Data Structures},
  author = {Trevor Brown and Faith Ellen and Eric Ruppert},
  journal= {arXiv preprint arXiv:1712.06688},
  year   = {2017}
}
R2 v1 2026-06-22T23:22:18.722Z