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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital Library
- R. Bayer. Symmetric binary B-trees: Data structure and maintenance algorithms. Acta Informatica, 1(4):290--306, 1972.Google Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital Library
- T. Crain, V. Gramoli, and M. Raynal. A contention-friendly binary search tree. In Euro-Par, pages 229--240, 2013. Google Scholar
Digital Library
- D. Drachsler, M. Vechev, and E. Yahav. Practical concurrent binary search trees via logical ordering. Inrm these proceedings, 2014. Google Scholar
Digital 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 Scholar
Digital Library
- K. Fraser and T. Harris. Concurrent programming without locks. ACM Trans. on Computer Systems, 25(2):5, 2007. Google Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital Library
- H. Kung and P. L. Lehman. Concurrent manipulation of binary search trees. ACM Transactions on Database Systems, 5(3):354--382, 1980. Google Scholar
Digital Library
- K. S. Larsen. Amortized constant relaxed rebalancing using standard rotations. Acta Informatica, 35(10):859--874, 1998.Google Scholar
Cross Ref
- K. S. Larsen. AVL trees with relaxed balance. J. Comput. Syst. Sci., 61(3):508--522, Dec. 2000. Google Scholar
Digital 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 Scholar
Digital Library
- A. Natarajan and N. Mittal. Fast concurrent lock-free binary search trees. Inrm these proceedings, 2014. Google Scholar
Digital 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 Scholar
Cross Ref
- O. Nurmi and E. Soisalon-Soininen. Chromatic binary search trees: A structure for concurrent rebalancing. Acta Informatica, 33(6):547--557, 1996.Google Scholar
Digital Library
- N. Shafiei. Non-blocking Patricia tries with replace operations. In Proc. 33rd International Conference on Distributed Computing Systems, pages 216--225, 2013. Google Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 ...
A general technique for non-blocking trees
PPoPP '14: Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programmingWe 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 ...
Grasping the gap between blocking and non-blocking transactional memories
Transactional memory (TM) is an inherently optimistic abstraction: it allows concurrent processes to execute sequences of shared-data accesses (transactions) speculatively, with an option of aborting them in the future. Early TM designs avoided using ...







Comments