\bf DCAS-Based Concurrent Deques

Abstract.The computer industry is currently examining the use of strong synchronization operations such as double compare-and-swap (DCAS) as a means of supporting non-blocking synchronization on future multiprocessor machines. However, before such a strong primitive will be incorporated into hardware design, its utility needs to be proven by developing a body of effective non-blocking data structures using DCAS.As part of this effort, we present two new linearizable non-blocking implementations of concurrent deques using the DCAS operation. The first uses an array representation, and improves on previous algorithms by allowing uninterrupted concurrent access to both ends of the deque while correctly handling the difficult boundary cases when the deque is empty or full. The second uses a linked-list representation, and is the first non-blocking, dynamically-sized deque implementation. It too allows uninterrupted concurrent access to both ends of the deque. We have proved these algorithms correct with the aid of a mechanical theorem prover; we describe these proofs in the paper.

[1]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[2]  Mark Moir,et al.  DCAS-based concurrent deques supporting bulk allocation , 2002 .

[3]  Maurice Herlihy,et al.  A methodology for implementing highly concurrent data structures , 1990, PPOPP '90.

[4]  Hagit Attiya,et al.  Universal operations: unary versus binary , 1996, PODC '96.

[5]  Hagit Attiya,et al.  Atomic Snapshots in O(n log n) Operations , 1998, SIAM J. Comput..

[6]  Nancy A. Lynch,et al.  Are wait-free algorithms fast? , 1994, JACM.

[7]  Ronald L. Rivest,et al.  Introduction to Algorithms , 1990 .

[8]  Martin C. Rinard,et al.  Effective fine-grain synchronization for automatically parallelized programs using optimistic synchronization primitives , 1999, TOCS.

[9]  Donald E. Knuth,et al.  The Art of Computer Programming, Volume I: Fundamental Algorithms, 2nd Edition , 1997 .

[10]  Nir Shavit,et al.  Even Better DCAS-Based Concurrent Deques , 2000, DISC.

[11]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[12]  David R. Cheriton,et al.  The synergy between non-blocking synchronization and operating system structure , 1996, OSDI '96.

[13]  Calton Pu,et al.  A Lock-Free Multiprocessor OS Kernel , 1992, OPSR.

[14]  Gadi Taubenfeld,et al.  Disentangling Multi-object Operations , 1997 .

[15]  K. Rustan M. Leino,et al.  Extended static checking , 1998, PROCOMET.

[16]  Nir Shavit,et al.  Software transactional memory , 1995, PODC '95.

[17]  Donald E. Knuth The art of computer programming: fundamental algorithms , 1969 .

[18]  Maurice Herlihy,et al.  Transactional Memory: Architectural Support For Lock-free Data Structures , 1993, Proceedings of the 20th Annual International Symposium on Computer Architecture.

[19]  Mark Moir,et al.  Lock-free reference counting , 2002 .

[20]  湯浅 太一,et al.  Common Lisp(パネル討論会) , 1986 .

[21]  Maurice Herlihy,et al.  Wait-free synchronization , 1991, TOPL.

[22]  Brian N. Bershad,et al.  Practical considerations for non-blocking concurrent objects , 1993, [1993] Proceedings. The 13th International Conference on Distributed Computing Systems.

[23]  David R. Cheriton,et al.  Non-blocking synchronization and system design , 1999 .

[24]  C. Greg Plaxton,et al.  Thread Scheduling for Multiprogrammed Multiprocessors , 1998, SPAA '98.

[25]  Greg Barnes,et al.  A method for implementing lock-free shared-data structures , 1993, SPAA '93.

[26]  David A. Patterson,et al.  Computer Architecture: A Quantitative Approach , 1969 .

[27]  Nir Shavit,et al.  DCAS-based concurrent deques , 2000, SPAA '00.