Strongly-Linearizable Bags
Abstract
Strongly-linearizable objects are valuable building blocks for the design of concurrent data structures. Yet, many objects that have linearizable implementations from some set of objects do not have strongly-linearizable implementations from that set of objects. We focus on one such object with consensus number 2: the bag, a multiset from which processes can take arbitrary elements. We present the first lock-free, strongly-linearizable implementation of a bag from interfering objects (specifically, registers, test&set objects, and readable fetch&increment objects). We show that a previously proposed implementation is, in fact, not strongly-linearizable. Since a bag can be arbitrarily large, the amount of space that it requires must be unbounded. A more practical object is a $b$-bounded bag, which is a bag whose maximum capacity is $b$ elements. However, a 1-bounded bag has no lock-free, strongly-linearizable implementation from interfering objects. If we restrict the 1-bounded bag so that only one process can insert into it, we are able to obtain a wait-free, linearizable implementation and a lock-free, strongly-linearizable implementation from a bounded number of readable, resettable test&set objects and registers.
- Publication:
-
arXiv e-prints
- Pub Date:
- November 2024
- DOI:
- 10.48550/arXiv.2411.19365
- arXiv:
- arXiv:2411.19365
- Bibcode:
- 2024arXiv241119365E
- Keywords:
-
- Computer Science - Distributed;
- Parallel;
- and Cluster Computing;
- Computer Science - Data Structures and Algorithms