ABSTRACT
We describe a general technique for obtaining provably correct, non-blocking implementations of a large class of tree data structures where pointers are directed from parents to children. Updates are permitted to modify any contiguous portion of the tree atomically. Our non-blocking algorithms make use of the LLX, SCX and VLX primitives, which are multi-word generalizations of the standard LL, SC and VL primitives and have been implemented from single-word CAS. To illustrate our technique, we describe how it can be used in a fairly straightforward way to obtain a non-blocking implementation of a chromatic tree, which is a relaxed variant of a red-black tree. The height of the tree at any time is O(c + log n), where n is the number of keys and c is the number of updates in progress. We provide an experimental performance analysis which demonstrates that our Java implementation of a chromatic tree rivals, and often significantly outperforms, other leading concurrent dictionaries.
- Y. Afek, H. Kaplan, B. Korenfeld, A. Morrison, and R. Tarjan. CBTree: A practical concurrent self-adjusting search tree. In Proc. 26th International Symposium on Distributed Computing, volume 7611 of LNCS, pages 1--15, 2012. Google ScholarDigital Library
- Z. Aghazadeh, W. Golab, and P. Woelfel. Brief announcement: Resettable objects and efficient memory reclamation for concurrent algorithms. In Proc. 32nd ACM Symposium on Principles of Distributed Computing, pages 322--324, 2013. Google ScholarDigital Library
- J. H. Anderson and M. Moir. Universal constructions for multi-object operations. In Proc. 14th ACM Symposium on Principles of Distributed Computing, pages 184--193, 1995. Google ScholarDigital Library
- G. Barnes. A method for implementing lock-free data structures. In Proc. 5th ACM Symposium on Parallel Algorithms and Architectures, pages 261--270, 1993. Google ScholarDigital Library
- R. Bayer. Symmetric binary B-trees: Data structure and maintenance algorithms. Acta Informatica, 1(4):290--306, 1972.Google ScholarDigital Library
- L. Bougé, J. Gabarró, X. Messeguer, and N. Schabanel. Height-AVL rebalancing: A unified, fine-grained approach to concurrent dictionaries. Technical Report LSI-98--12-R, Universitat Politècnica de Catalunya, 1998. Available from http://www.lsi.upc.edu/dept/techreps/llistat_detallat.php?id=307.Google Scholar
- J. Boyar, R. Fagerberg, and K. S. Larsen. Amortization results for chromatic search trees, with an application to priority queues. J. Comput. Syst. Sci., 55(3):504--521, Dec. 1997. Google ScholarDigital Library
- A. Braginsky and E. Petrank. A lock-free B+ tree. In Proc. 24th ACM Symposium on Parallelism in Algorithms and Architectures, pages 58--67, 2012. Google ScholarDigital Library
- N. G. Bronson, J. Casper, H. Chafi, and K. Olukotun. A practical concurrent binary search tree. In Proc. 15th ACM Symposium on Principles and Practice of Parallel Programming, pages 257--268, 2010. Google ScholarDigital Library
- T. Brown, F. Ellen, and E. Ruppert. Pragmatic primitives for non-blocking data structures. In Proc. 32nd ACM Symposium on Principles of Distributed Computing, 2013. Full version available from http://www.cs.utoronto.ca/ tabrown. Google ScholarDigital Library
- T. Brown and J. Helga. Non-blocking k-ary search trees. In Proc. 15th International Conf. on Principles of Distributed Systems, volume 7109 of LNCS, pages 207--221, 2011. Google ScholarDigital Library
- T. Crain, V. Gramoli, and M. Raynal. A speculation-friendly binary search tree. In Proc. 17th ACM Symp. on Principles and Practice of Parallel Programming, pages 161--170, 2012. Google ScholarDigital Library
- T. Crain, V. Gramoli, and M. Raynal. A contention-friendly binary search tree. In Euro-Par, pages 229--240, 2013. Google ScholarDigital Library
- D. Drachsler, M. Vechev, and E. Yahav. Practical concurrent binary search trees via logical ordering. Inrm these proceedings, 2014. Google ScholarDigital Library
- F. Ellen, P. Fatourou, E. Ruppert, and F. van Breugel. Non-blocking binary search trees. In Proc. 29th ACM Symposium on Principles of Distributed Computing, pages 131--140, 2010. Full version available as Technical Report CSE-2010-04, York University. Google ScholarDigital Library
- K. Fraser and T. Harris. Concurrent programming without locks. ACM Trans. on Computer Systems, 25(2):5, 2007. Google ScholarDigital Library
- K. A. Fraser. Practical lock-freedom. PhD thesis, University of Cambridge, 2003.Google Scholar
- L. J. Guibas and R. Sedgewick. A dichromatic framework for balanced trees. In Proc. 19th IEEE Symposium on Foundations of Computer Science, pages 8--21, 1978. Google ScholarDigital Library
- M. Herlihy, V. Luchangco, M. Moir, and W. N. Scherer, III. Software transactional memory for dynamic-sized data structures. In Proc. 22nd ACM Symposium on Principles of Distributed Computing, pages 92--101, 2003. Google ScholarDigital Library
- S. V. Howley and J. Jones. A non-blocking internal binary search tree. In Proc. 24th ACM Symposium on Parallelism in Algorithms and Architectures, pages 161--171, 2012. Google ScholarDigital Library
- H. Kung and P. L. Lehman. Concurrent manipulation of binary search trees. ACM Transactions on Database Systems, 5(3):354--382, 1980. Google ScholarDigital Library
- K. S. Larsen. Amortized constant relaxed rebalancing using standard rotations. Acta Informatica, 35(10):859--874, 1998.Google ScholarCross Ref
- K. S. Larsen. AVL trees with relaxed balance. J. Comput. Syst. Sci., 61(3):508--522, Dec. 2000. Google ScholarDigital Library
- K. S. Larsen, T. Ottmann, and E. Soisalon-Soininen. Relaxed balance for search trees with local rebalancing. Acta Informatica, 37(10):743--763, 2001. Google ScholarDigital Library
- A. Natarajan and N. Mittal. Fast concurrent lock-free binary search trees. Inrm these proceedings, 2014. Google ScholarDigital Library
- A. Natarajan, L. Savoie, and N. Mittal. Concurrent wait-free red black trees. In Proc. 15th International Symposium on Stabilization, Safety and Security of Distributed Systems, volume 8255 of LNCS, pages 45--60, 2013.Google ScholarCross Ref
- O. Nurmi and E. Soisalon-Soininen. Chromatic binary search trees: A structure for concurrent rebalancing. Acta Informatica, 33(6):547--557, 1996.Google ScholarDigital Library
- N. Shafiei. Non-blocking Patricia tries with replace operations. In Proc. 33rd International Conference on Distributed Computing Systems, pages 216--225, 2013. Google ScholarDigital Library
- M. Spiegel and P. F. Reynolds, Jr. Lock-free multiway search trees. In Proc. 39th International Conference on Parallel Processing, pages 604--613, 2010. Google ScholarDigital Library
- J.-J. Tsay and H.-C. Li. Lock-free concurrent tree structures for multiprocessor systems. In Proc. International Conference on Parallel and Distributed Systems, pages 544--549, 1994. Google ScholarDigital Library
- J. Turek, D. Shasha, and S. Prakash. Locking without blocking: Making lock based concurrent data structure algorithms nonblocking. In Proc. 11th ACM Symposium on Principles of Database Systems, pages 212--222, 1992. Google ScholarDigital Library
- J. D. Valois. Lock-free linked lists using compare-and-swap. In Proc. 14th ACM Symposium on Principles of Distributed Computing, pages 214--222, 1995. Google ScholarDigital Library
Index Terms
- A general technique for non-blocking trees
Recommendations
Pragmatic primitives for non-blocking data structures
PODC '13: Proceedings of the 2013 ACM symposium on Principles of distributed computingWe define a new set of primitive operations that greatly simplify the implementation of non-blocking data structures in asynchronous shared-memory systems. The new operations operate on a set of Data-records, each of which contains multiple fields. The ...
Non-blocking binary search trees
PODC '10: Proceedings of the 29th ACM SIGACT-SIGOPS symposium on Principles of distributed computingThis paper describes the first complete implementation of a non-blocking binary search tree in an asynchronous shared-memory system using single-word compare-and-swap operations. The implementation is linearizable and tolerates any number of crash ...
A general technique for non-blocking trees
PPoPP '14We describe a general technique for obtaining provably correct, non-blocking implementations of a large class of tree data structures where pointers are directed from parents to children. Updates are permitted to modify any contiguous portion of the tree ...
Comments