Abstract
Lock-free data structures guarantee overall system progress, whereas wait-free data structures guarantee the progress of each and every thread, providing the desirable non-starvation guarantee for concurrent data structures. While practical lock-free implementations are known for various data structures, wait-free data structure designs are rare. Wait-free implementations have been notoriously hard to design and often inefficient. In this work we present a transformation of lock-free algorithms to wait-free ones allowing even a non-expert to transform a lock-free data-structure into a practical wait-free one. The transformation requires that the lock-free data structure is given in a normalized form defined in this work. Using the new method, we have designed and implemented wait-free linked-list, skiplist, and tree and we measured their performance. It turns out that for all these data structures the wait-free implementations are only a few percent slower than their lock-free counterparts, while still guaranteeing non-starvation.
- Yehuda Afek, Dalia Dauber, and Dan Touitou. Wait-free made fast. In STOC, pages 538--547, 1995. Google Scholar
Digital Library
- James H. Anderson and Yong-Jik Kim. Fast and scalable mutual exclusion. In DISC, pages 180--194, 1999. Google Scholar
Digital Library
- James H. Anderson and Yong-Jik Kim. Adaptive mutual exclusion with local spinning. In DISC, pages 29--43, 2000. Google Scholar
Digital Library
- James H. Anderson and Mark Moir. Universal constructions for large objects. IEEE Trans. Parallel Distrib. Syst., 10(12):1317--1332, 1999. Google Scholar
Digital Library
- Phong Chuong, Faith Ellen, and Vijaya Ramachandran. A universal construction for wait-free transaction friendly data structures. In SPAA, pages 335--344, 2010. Google Scholar
Digital Library
- Tyler Crain, Damien Imbs, and Michel Raynal. Towards a universal construction for transaction-based multiprocess programs. In ICDCN, pages 61--75, 2012. Google Scholar
Digital Library
- Faith Ellen, Panagiota Fatourou, Eric Ruppert, and Franck van Breugel. Non-blocking binary search trees. In PODC, 2010. Google Scholar
Digital Library
- Panagiota Fatourou and Nikolaos D. Kallimanis. The redblue adaptive universal constructions. In DISC, pages 127--141, 2009. Google Scholar
Digital Library
- Panagiota Fatourou and Nikolaos D. Kallimanis. A highly-efficient wait-free universal construction. In SPAA, pages 325--334, 2011. Google Scholar
Digital Library
- Faith Ellen Fich, Victor Luchangco, Mark Moir, and Nir Shavit. Obstruction-free algorithms can be practically wait-free. In DISC, pages 78--92, 2005. Google Scholar
Digital Library
- Mikhail Fomitchev and Eric Ruppert. Lock-free linked lists and skip lists. In PODC'04, pages 50--59, 2004. Google Scholar
Digital Library
- Michael Greenwald. Two-handed emulation: how to build non-blocking implementation of complex data-structures using dcas. In PODC, pages 260--269, 2002. Google Scholar
Digital Library
- Rachid Guerraoui, Michal Kapalka, and Petr Kouznetsov. The weakest failure detectors to boost obstruction-freedom. Distributed Computing, 20(6):415--433, 2008.Google Scholar
Cross Ref
- Timothy L. Harris. A pragmatic implementation of non-blocking linked-lists. In DISC'01, 2001. Google Scholar
Digital Library
- Maurice Herlihy. A methodology for implementing highly concurrent data structures. In PPOPP, pages 197--206, 1990. Google Scholar
Digital Library
- Maurice Herlihy. A methodology for implementing highly concurrent objects. ACM TOPLAS, 15(5):745--770, 1993. Google Scholar
Digital Library
- Maurice Herlihy and Nir Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann, 2008. Google Scholar
Digital Library
- Alex Kogan and Erez Petrank. Wait-free queues with multiple enqueuers and dequeuers. In PPOPP, pages 223--234, 2011. Google Scholar
Digital Library
- Alex Kogan and Erez Petrank. A methodology for creating fast wait-free data structures. In PPOPP, pp. 141--150, 2012. Google Scholar
Digital Library
- Leslie Lamport. A fast mutual exclusion algorithm. ACM Trans. Comput. Syst., 5(1):1--11, 1987. Google Scholar
Digital Library
- Maged M. Michael. Hazard pointers: Safe memory reclamation for lock-free objects. IEEE Trans. Parallel Distrib. Syst., 15(6), 2004. Google Scholar
Digital Library
- Mark Moir and James H. Anderson. Wait-free algorithms for fast, long-lived renaming. Sci. Comput. Program., 25(1):1--39, 1995. Google Scholar
Digital Library
- Gadi Taubenfeld. Contention-sensitive data structures and algorithms. In DISC, pages 157--171, 2009. Google Scholar
Digital Library
- Shahar Timnat, Anastasia Braginsky, Alex Kogan, and Erez Petrank. Wait-free linked-lists. In OPODIS, 2012.Google Scholar
Digital Library
Index Terms
A practical wait-free simulation for lock-free data structures
Recommendations
A practical wait-free simulation for lock-free data structures
PPoPP '14: Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programmingLock-free data structures guarantee overall system progress, whereas wait-free data structures guarantee the progress of each and every thread, providing the desirable non-starvation guarantee for concurrent data structures. While practical lock-free ...
Lock-Free Data-Structure Iterators
DISC 2013: Proceedings of the 27th International Symposium on Distributed Computing - Volume 8205Concurrent 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-...
Wait-free linked-lists
PPoPP '12: Proceedings of the 17th ACM SIGPLAN symposium on Principles and Practice of Parallel ProgrammingThe linked-list data structure is fundamental and ubiquitous. Lock-free versions of the linked-list are well known. However, the existence of a practical wait-free linked-list has been open. In this work we designed such a linked-list. To achieve better ...







Comments