Lock-Free Resizeable Concurrent Tries

  • Aleksandar Prokopec
  • Phil Bagwell
  • Martin Odersky
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7146)


This paper describes an implementation of a non-blocking concurrent hash trie based on single-word compare-and-swap instructions in a shared-memory system. Insert, lookup and remove operations modifying different parts of the hash trie can be run completely independently. Remove operations ensure that the unneeded memory is freed and that the trie is kept compact. A pseudocode for these operations is presented and a proof of correctness is given – we show that the implementation is linearizable and lock-free. Finally, benchmarks are presented that compare concurrent hash trie operations against the corresponding operations on other concurrent data structures.


Internal Node Hash Table Transactional Memory Binary Search Tree Execution Step 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Bagwell, P.: Ideal Hash Trees (2002)Google Scholar
  2. 2.
    Georges, A., Buytaert, D., Eeckhout, L.: Statistically Rigorous Java Performance Evaluation. In: OOPSLA (2007)Google Scholar
  3. 3.
    Doug Lea’s Home Page,
  4. 4.
    Michael, M.M.: High Performance Dynamic Lock-Free Hash Tables and List-Based Sets. In: SPAA (2002)Google Scholar
  5. 5.
    Harris, T.L.: A Pragmatic Implementation of Non-Blocking Linked-Lists. In: IEEE Symposium on Distributed Computing (2001)Google Scholar
  6. 6.
    Brandais, R.: File searching using variable length keys. In: Proceedings of Western Joint Computer Conference (1959)Google Scholar
  7. 7.
    Fredkin, E.: Trie memory. Communications of the ACM (1960)Google Scholar
  8. 8.
    Silverstein, A.: Judy IV Shop Manual (2002)Google Scholar
  9. 9.
    Shavit, N., Herlihy, M.: The Art of Multiprocessor Programming. Morgan Kaufmann (2008)Google Scholar
  10. 10.
    Moir, M., Shavit, N.: Concurrent data structures. In: Handbook of Data Structures and Applications. Chapman and Hall (2004)Google Scholar
  11. 11.
    Herlihy, M., Wing, J.: Linearizability: A Correctness Condition for Concurrent Objects. ACM Transactions on Programming Languages and Systems (1990)Google Scholar
  12. 12.
    Litwin, W.: Trie Hashing. ACM (1981)Google Scholar
  13. 13.
    Litwin, W., Sagiv, Y., Vidyasankar, K.: Concurrency and Trie Hashing. ACM (1981)Google Scholar
  14. 14.
    Cormen, T.H., Leiserson, C.E., Rivest, R.L., Stein, C.: Introduction to Algorithms, 2nd edn. The MIT Press (2001)Google Scholar
  15. 15.
    Shalev, O., Shavit, N.: Split-Ordered Lists: Lock-Free Extensible Hash Tables. Journal of the ACM 53(3) (2006)Google Scholar
  16. 16.
    Pugh, W.: Skip Lists: A Probabilistic Alternative to Balanced Trees. Communications ACM 33 (1990)Google Scholar
  17. 17.
    Pugh, W.: Concurrent Maintenance of Skip Lists (1990)Google Scholar
  18. 18.
    Herlihy, M., Lev, Y., Luchangco, V., Shavit, N.: A Provably Correct Scalable Concurrent Skip List. In: OPODIS (2006)Google Scholar
  19. 19.
    Kung, H., Lehman, P.: Concurrent manipulation of binary search trees. ACM (1980)Google Scholar
  20. 20.
    Bronson, N.G., Casper, J., Chafi, H., Olukotun, K.: A Practical Concurrent Binary Search Tree. ACM (2009)Google Scholar
  21. 21.
    Ellen, F., Fatourou, P., Ruppert, E., van Breugel, F.: Non-blocking binary search trees. In: PODC (2010)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2013

Authors and Affiliations

  • Aleksandar Prokopec
    • 1
  • Phil Bagwell
    • 1
  • Martin Odersky
    • 1
  1. 1.École Polytechnique Fédérale de LausanneLausanneSwitzerland

Personalised recommendations