TY - GEN
T1 - Help!
AU - Censor-Hillel, Keren
AU - Petrank, Erez
AU - Timnat, Shahar
N1 - Publisher Copyright: © Copyright 2015 ACM.
PY - 2015/7/21
Y1 - 2015/7/21
N2 - A fundamental challenge in designing concurrent data structures is obtaining efficient wait-free implementations, in which each operation completes regardless of the behavior of other operations in the system. The most common paradigm for guaranteeing wait- freedom is to employ a helping mechanism, in which, intuitively, fast processes help slow processes complete their operations. Curiously, despite its abundant use, to date, helping has not been formally defined nor was its necessity rigorously studied. In this paper we initiate a rigorous study of the interaction between wait-freedom and helping. We start with presenting a formal definition of help, capturing the intuition of one thread helping an- other to make progress. Next, we present families of object types for which help is necessary in order to obtain wait-freedom. In other words, we prove that for some types there are no linearizable wait-free help-free implementations. In contrast, we show that other, simple types, can be implemented in a linearizable wait-free manner without employing help. Finally, we provide a universal strong primitive for implementing wait-free data structures without using help. Specifically, given a wait-free help-free fetch&cons ob- ject, one can implement any type in a wait-free help-free manner.
AB - A fundamental challenge in designing concurrent data structures is obtaining efficient wait-free implementations, in which each operation completes regardless of the behavior of other operations in the system. The most common paradigm for guaranteeing wait- freedom is to employ a helping mechanism, in which, intuitively, fast processes help slow processes complete their operations. Curiously, despite its abundant use, to date, helping has not been formally defined nor was its necessity rigorously studied. In this paper we initiate a rigorous study of the interaction between wait-freedom and helping. We start with presenting a formal definition of help, capturing the intuition of one thread helping an- other to make progress. Next, we present families of object types for which help is necessary in order to obtain wait-freedom. In other words, we prove that for some types there are no linearizable wait-free help-free implementations. In contrast, we show that other, simple types, can be implemented in a linearizable wait-free manner without employing help. Finally, we provide a universal strong primitive for implementing wait-free data structures without using help. Specifically, given a wait-free help-free fetch&cons ob- ject, one can implement any type in a wait-free help-free manner.
KW - Concurrent data structures
KW - Help
KW - Parallel algorithms
KW - Progress guaran- Tees
KW - Wait-freedom
UR - http://www.scopus.com/inward/record.url?scp=84946074367&partnerID=8YFLogxK
U2 - 10.1145/2767386.2767415
DO - 10.1145/2767386.2767415
M3 - منشور من مؤتمر
T3 - Proceedings of the Annual ACM Symposium on Principles of Distributed Computing
SP - 241
EP - 250
BT - PODC 2015 - Proceedings of the 2015 ACM Symposium on Principles of Distributed Computing
T2 - ACM Symposium on Principles of Distributed Computing, PODC 2015
Y2 - 21 July 2015 through 23 July 2015
ER -