A method and apparatus are provided for an efficient lock-free, non-blocking
hash
table. Under one aspect, a linked list of nodes is formed in the hash table where
each node includes a protected pointer to the next node in the list and a reference
counter indicating the number of references currently made to the node. The reference
counter of a node must be zero and none of the protected pointers in a linked list
can be pointing at the node before the node can be destroyed. In another aspect
of the invention, searching for a node in the hash table with a particular key
involves examining the hash signatures of nodes along a linked list and only comparing
the key of a node to a search key of the node if the hash signature of the node
matches a search hash signature.