Abstract
The literature describes two high performance concurrent stack algorithms based on combining funnels and elimination trees. Unfortunately, the funnels are linearizable but blocking, and the elimination trees are non-blocking but not linearizable. Neither is used in practice since they perform well only at exceptionally high loads. The literature also describes a simple lock-free linearizable stack algorithm that works at low loads but does not scale as the load increases. The question of designing a stack algorithm that is non-blocking, linearizable, and scales well throughout the concurrency range, has thus remained open. This paper presents such a concurrent stack algorithm. It is based on the following simple observation: that a single elimination array used as a backoff scheme for a simple lock-free stack is lock-free, linearizable, and scalable, As our empirical results show, the resulting elimination-backoff stack performs as well as the simple stack at low loads, and increasingly outperforms all other methods (lock-based and non-blocking) as concurrency increases. We believe its simplicity and scalability make it a viable practical alternative to existing constructions for implementing concurrent stacks.
Original language | English |
---|---|
Pages | 206-215 |
Number of pages | 10 |
DOIs | |
State | Published - 1 Jan 2004 |
Externally published | Yes |
Event | SPAA 2004 - Sixteenth Annual ACM Symposium on Parallelism in Algorithms and Architectures - Barcelona, Spain Duration: 27 Jun 2004 → 30 Jun 2004 |
Conference
Conference | SPAA 2004 - Sixteenth Annual ACM Symposium on Parallelism in Algorithms and Architectures |
---|---|
Country/Territory | Spain |
City | Barcelona |
Period | 27/06/04 → 30/06/04 |
Keywords
- Algorithms
- Lock-freedom
- Scalability
- Theory
ASJC Scopus subject areas
- Software
- Safety, Risk, Reliability and Quality