ParaHash


Project maintained by emilytsui Hosted on GitHub Pages — Theme by mattgraham

Project Proposal: Lock-Free Hash Table Implementations

Brenda Thayillam & Emily Tsui


Proposal | Checkpoint | Final Writeup


Summary

We will be implementing one lock-free hash table optimized for inserts and one lock-free hash table optimized for deletes and potentially allow the ability for dynamic switching between the two implementations based on access patterns of the program the structures are being used in.

Background

Lock-free hash tables guarantee that multiple threads performing operations on the data structure will have their operation performed within a finite amount of time independent of other operations. Lock-free data structures generally perform better than lock-based implementations because of their non-blocking characteristic that allows parallel execution of threads. To get around locking, they are implemented using Compare-And-Swap operations, which replaces an old value if the current value is what the thread expects it to be.

Challenge

It’s hard to make a good performance lock-free hash table because of issues that can arise once operations cannot be synchronized with locks. This means there need to be mechanisms in place that maintain correct behavior of the data structure but still provide good performance. While it might not be as hard to optimize for either insert or delete, it’s hard to achieve optimal performance on all operations.

Resources

Goals and Deliverables

Plan to achieve

Hope to achieve

Deliverables

Platform Choice

The code will be written in C++, and we plan to use GCC’s implementation of compare and swap. We will be developing on the GHC machines because our code should not be too compute intensive.

Schedule (Updated 4/24/17)