TY - GEN
T1 - Strong Linearizability using Primitives with Consensus Number 2
AU - Attiya, Hagit
AU - Castaneda, Armando
AU - Enea, Constantin
N1 - Publisher Copyright:
© 2024 Association for Computing Machinery. All rights reserved.
PY - 2024/6/17
Y1 - 2024/6/17
N2 - A powerful tool for designing complex concurrent programs is through composition with object implementations from lower-level primitives. Strongly-linearizable implementations allow to preserve hyper-properties, e.g., probabilistic guarantees of randomized programs. However, the only known wait-free strongly-linearizable implementations for many objects rely on compare&swap, a universal primitive that allows any number of processes to solve consensus. This is despite the fact that these objects have wait-free linearizable implementations from read / write primitives, which do not support consensus. This paper investigates a middle-ground, asking whether there are wait-free strongly-linearizable implementations from realistic primitives such as test&set or fetch&add, whose consensus number is 2.We show that many objects with consensus number 1 have wait-free strongly-linearizable implementations from fetch&add. We also show that several objects with consensus number 2 have wait-free or lock-free implementations from other objects with consensus number 2. In contrast, we prove that even when fetch&add, swap and test&set primitives are used, some objects with consensus number 2 do not have lock-free strongly-linearizable implementations. This includes queues and stacks, as well as relaxed variants thereof.
AB - A powerful tool for designing complex concurrent programs is through composition with object implementations from lower-level primitives. Strongly-linearizable implementations allow to preserve hyper-properties, e.g., probabilistic guarantees of randomized programs. However, the only known wait-free strongly-linearizable implementations for many objects rely on compare&swap, a universal primitive that allows any number of processes to solve consensus. This is despite the fact that these objects have wait-free linearizable implementations from read / write primitives, which do not support consensus. This paper investigates a middle-ground, asking whether there are wait-free strongly-linearizable implementations from realistic primitives such as test&set or fetch&add, whose consensus number is 2.We show that many objects with consensus number 1 have wait-free strongly-linearizable implementations from fetch&add. We also show that several objects with consensus number 2 have wait-free or lock-free implementations from other objects with consensus number 2. In contrast, we prove that even when fetch&add, swap and test&set primitives are used, some objects with consensus number 2 do not have lock-free strongly-linearizable implementations. This includes queues and stacks, as well as relaxed variants thereof.
KW - concurrency
KW - consensus numbers
KW - linearizability
KW - lock-freedom
KW - shared memory
KW - strong linearizability
KW - wait-freedom
UR - https://www.scopus.com/pages/publications/85199053721
U2 - 10.1145/3662158.3662790
DO - 10.1145/3662158.3662790
M3 - Conference contribution
AN - SCOPUS:85199053721
T3 - Proceedings of the Annual ACM Symposium on Principles of Distributed Computing
SP - 432
EP - 442
BT - PODC 2024 - Proceedings of the 2024 ACM Symposium on Principles of Distributed Computing
PB - Association for Computing Machinery
T2 - 43rd ACM SIGACT-SIGOPS Symposium on Principles of Distributed Computing, PODC 2024
Y2 - 17 June 2024 through 21 June 2024
ER -