One embodiment of the present invention provides a system that implements
a hash table that is fully dynamic and lock-free. During a lookup in the
hash table the system first uses a hash key to lookup a bucket pointer in
a bucket array. Next, the system follows the bucket pointer to a data
node within a linked list that contains all of the data nodes in the hash
table, wherein the linked list contains only data nodes and at most a
constant number of dummy nodes. The system then searches from the data
node through the linked list to locate a node that matches the hash key,
if one exists.