Non-blocking Hashtables with Open Addressing

  • Chris Purcell
  • Tim Harris
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3724)

Abstract

We present the first non-blocking hashtable based on open addressing that provides the following benefits: it combines good cache locality, accessing a single cacheline if there are no collisions, with short straight-line code; it needs no storage overhead for pointers and memory allocator schemes, having instead an overhead of two words per bucket; it does not need to periodically reorganise or replicate the table; and it does not need garbage collection, even with arbitrary-sized keys. Open problems include resizing the table and replacing, rather than erasing, entries. The result is a highly-concurrent set algorithm that approaches or outperforms the best externally-chained implementations we tested, with fixed memory costs and no need to select or fine-tune a garbage collector or locking strategy.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Gao, H., Groote, J., Hesselink, W.: Almost Wait-Free Resizable Hashtables. In: Proceedings of the 18th International Parallel and Distributed Processing Symposium, April 2004, p. 50a (2004)Google Scholar
  2. 2.
    Fraser, K.: Practical Lock-Freedom. University of Cambridge Computer Laboratory, Technical Report number 579 (February 2004)Google Scholar
  3. 3.
    Knuth, D.: The Art of Computer Programming. Part 3, Sorting and Searching. Addison-Wesley, Reading (1973)Google Scholar
  4. 4.
    Lamport, L.: Concurrent Reading and Writing. Communications of the ACM, 806–811 (1977)Google Scholar
  5. 5.
    Martin, D., Davis, R.: A Scalable Non-Blocking Concurrent Hash Table Implementation with Incremental Rehashing (1997) (unpublished manuscript)Google Scholar
  6. 6.
    Mellor-Crummey, J., Scott, M.: Algorithms for Scalable Synchronization on Shared-Memory Multiprocessors. ACM Transactions on Computer Systems 9(1), 21–65 (1991)CrossRefGoogle Scholar
  7. 7.
    Michael, M.: Safe Memory Reclamation for Dynamic Lock-Free Objects using Atomic Reads and Writes. In: Proceedings of the 21st Annual Symposium on Principles of Distributed Computing, July 2002, pp. 21–30 (2002)Google Scholar
  8. 8.
    Michael, M.: High performance dynamic lock-free hash tables and list-based sets. In: Proceedings of the 14th Annual Symposium on Parallel Algorithms and Architectures, August 2002, pp. 73–82 (2002)Google Scholar
  9. 9.
    Shalev, O., Shavit, N.: Split-Ordered Lists: Lock-free Extensible Hash Tables. In: Proceedings of the 22nd Annual Symposium on Principles of Distributed Computing, July 2003, pp. 102–111 (2003)Google Scholar
  10. 10.
    Scherer, W., Scott, M.: Contention Management in Dynamic Software Transactional Memory. In: PODC Workshop on Concurrency and Synchronization in Java Programs, July 2004, pp. 70–79 (2004)Google Scholar
  11. 11.
    Purcell, C., Harris, T.: Non-blocking Hashtables with Open Addressing. University of Cambridge Computer Laboratory, Technical Report number 639 (September 2005)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Chris Purcell
    • 1
  • Tim Harris
    • 2
  1. 1.Computer LaboratoryUniversity of CambridgeCambridgeUK
  2. 2.Microsoft Research Ltd.CambridgeUK

Personalised recommendations