Non-blocking k-ary Search Trees

  • Trevor Brown
  • Joanna Helga
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7109)


This paper presents the first concurrent non-blocking k-ary search tree. Our data structure generalizes the recent non-blocking binary search tree of Ellen et al. [5] to trees in which each internal node has k children. Larger values of k decrease the depth of the tree, but lead to higher contention among processes performing updates to the tree. Our Java implementation uses single-word compare-and-set operations to coordinate updates to the tree. We present experimental results from a 16-core Sun machine with 128 hardware contexts, which show that our implementation achieves higher throughput than the non-blocking skip list of the Java class library and the leading lock-based concurrent search tree of Bronson et al. [3].


data structures non-blocking concurrency binary search tree set 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Barnes, G.: A method for implementing lock-free data structures. In: Proc. 5th ACM Symposium on Parallel Algorithms and Architectures, pp. 261–270 (1993)Google Scholar
  2. 2.
    Bender, M.A., Fineman, J.T., Gilbert, S., Kuszmaul, B.C.: Concurrent cache-oblivious B-trees. In: Proc. 17th ACM Symposium on Parallel Algorithms and Architectures, pp. 228–237 (2005)Google Scholar
  3. 3.
    Bronson, N.G., Casper, J., Chafi, H., Olukotun, K.: A practical concurrent binary search tree. In: Proc. 15th ACM Symposium on Principles and Practice of Parallel Programming, pp. 257–268 (2010)Google Scholar
  4. 4.
    Brown, T., Helga, J.: Non-blocking k-ary search trees. Technical Report CSE-2011-04, York University (2011), Appendix (with complete proof) and code available at
  5. 5.
    Ellen, F., Fatourou, P., Ruppert, E., van Breugel, F.: Non-blocking binary search trees. In: Proc. 29th ACM Symposium on Principles of Distributed Computing, pp. 131–140 (2010); Full version in Tech. Report CSE-2010-04, York University Google Scholar
  6. 6.
    Fomitchev, M., Ruppert, E.: Lock-free linked lists and skip lists. In: Proc. 23rd ACM Symposium on Principles of Distributed Computing, pp. 50–59 (2004)Google Scholar
  7. 7.
    Fraser, K., Harris, T.: Concurrent programming without locks. ACM Transactions on Computer Systems 25(2), 5 (2007)CrossRefGoogle Scholar
  8. 8.
    Fraser, K.A.: Practical lock-freedom. PhD thesis, University of Cambridge (2003)Google Scholar
  9. 9.
    Guibas, L.J., Sedgewick, R.: A dichromatic framework for balanced trees. In: Proc. 19th IEEE Symp. on Foundations of Computer Science, pp. 8–21 (1978)Google Scholar
  10. 10.
    Herlihy, M., Luchangco, V., Moir, M., Scherer III, W.N.: Software transactional memory for dynamic-sized data structures. In: Proc. 22nd ACM Symposium on Principles of Distributed Computing, pp. 92–101 (2003)Google Scholar
  11. 11.
    Herlihy, M.P., Wing, J.M.: Linearizability: a correctness condition for concurrent objects. ACM Transactions on Programming Languages and Systems 12(3), 463–492 (1990)CrossRefGoogle Scholar
  12. 12.
    Sundell, H., Tsigas, P.: Scalable and lock-free concurrent dictionaries. In: Proc. 19th ACM Symposium on Applied Computing, pp. 1438–1445 (2004)Google Scholar
  13. 13.
    Valois, J.D.: Lock-free linked lists using compare-and-swap. In: Proc. 14th ACM Symposium on Principles of Distributed Computing, pp. 214–222 (1995)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Trevor Brown
    • 1
  • Joanna Helga
    • 2
  1. 1.Theory Group, Dept. of Computer ScienceUniversity of TorontoCanada
  2. 2.DisCoVeri Group, Dept. of Computer Science and EngineeringYork UniversityCanada

Personalised recommendations