Lock-Free Data-Structure Iterators

Concurrent data structures are often used with large concurrent software. An iterator that traverses the data structure items is a highly desirable interface that often exists for sequential data structures but is missing from almost all concurrent data-structure implementations. In this paper we introduce a technique for adding a linearizable wait-free iterator to a wait-free or a lock-free data structure that implements a set. We use this technique to implement an iterator for the wait-free and lock-free linked-lists and for the lock-free skip-list.

[1]  Erez Petrank,et al.  Wait-free linked-lists , 2012, PPoPP '12.

[2]  Eric Ruppert,et al.  Lock-free linked lists and skip lists , 2004, PODC '04.

[3]  Nir Shavit,et al.  Interrupting snapshots and the Java size method , 2012, J. Parallel Distributed Comput..

[4]  Nir Shavit,et al.  Towards a practical snapshot algorithm , 1995, Proceedings Third Israel Symposium on the Theory of Computing and Systems.

[5]  Faith Ellen,et al.  Non-blocking binary search trees , 2010, PODC.

[6]  Martin Odersky,et al.  Concurrent tries with efficient non-blocking snapshots , 2012, PPoPP '12.

[7]  James H. Anderson,et al.  Multi-writer composite registers , 1994, Distributed Computing.

[8]  Nir Shavit,et al.  Interrupting Snapshots and the JavaTM^{\mbox{\tiny TM}} Size() Method , 2009, DISC.

[9]  Kunle Olukotun,et al.  A practical concurrent binary search tree , 2010, PPoPP '10.

[10]  Panagiota Fatourou,et al.  Time-optimal, space-efficient single-scanner snapshots & multi-scanner snapshots using CAS , 2007, PODC '07.

[11]  Erez Petrank,et al.  A lock-free B+tree , 2012, SPAA '12.

[12]  Maged M. Michael,et al.  Simple, fast, and practical non-blocking and blocking concurrent queue algorithms , 1996, PODC '96.

[13]  Nir Shavit,et al.  Atomic snapshots of shared memory , 1990, JACM.

[14]  Timothy L. Harris,et al.  A Pragmatic Implementation of Non-blocking Linked-Lists , 2001, DISC.

[15]  D. M. Hutton,et al.  The Art of Multiprocessor Programming , 2008 .

[16]  Prasad Jayanti An optimal multi-writer snapshot algorithm , 2005, STOC '05.