A history-independent data structure does not reveal the history of operations applied to it, only its current logical state, even if its internal state is examined. This paper studies history-independent concurrent dictionaries, in particular, hash tables, and establishes inherent bounds on their space requirements. This paper shows that there is a lock-free history-independent concurrent hash table, in which each memory cell stores two elements and two bits, based on Robin Hood hashing. Our implementation is linearizable, and uses the shared memory primitive LL/SC. The expected amortized step complexity of the hash table is $O(c)$, where $c$ is an upper bound on the number of concurrent operations that access the same element, assuming the hash table is not overpopulated. We complement this positive result by showing that even if we have only two concurrent processes, no history-independent concurrent dictionary that supports sets of any size, with wait-free membership queries and obstruction-free insertions and deletions, can store only two elements of the set and a constant number of bits in each memory cell. This holds even if the step complexity of operations on the dictionary is unbounded.
翻译:历史无关数据结构不揭示对其执行的操作历史,仅展现其当前逻辑状态,即使其内部状态被检视。本文研究历史无关并发字典,特别是哈希表,并确立其空间需求的内在界限。本文展示了一种基于罗宾汉哈希的无锁历史无关并发哈希表,其中每个存储单元保存两个元素和两个比特位。我们的实现是线性化的,并使用共享内存原语LL/SC。该哈希表的期望摊销步复杂度为$O(c)$,其中$c$是访问同一元素的并发操作数量的上界,前提是哈希表未过度填充。我们通过一个负面结果补充了这一正面结论:即使仅有两个并发进程,任何支持任意大小集合、具有无等待成员查询和无障碍插入删除操作的历史无关并发字典,都无法在每个存储单元中仅存储两个集合元素和常数个比特位。即使字典操作的步复杂度无界,该结论依然成立。