并发哈希与自然并行性
1. 引言
在之前的研究中,我们探讨了如何从队列、栈和计数器等数据结构中提取并行性,这些数据结构提供的并行机会相对较少。而在本文中,我们将采用相反的方法,研究并发哈希问题。并发哈希似乎具有“自然可并行性”,用更专业的术语来说,是不相交访问并行,这意味着并发方法调用可能访问不相交的位置,因此几乎不需要同步。
哈希是一种常用于顺序集合实现的技术,可确保 contains() 、 add() 和 remove() 调用的平均时间为常数。集合接口提供了以下返回布尔值的方法:
- add(x) :将 x 添加到集合中。如果 x 不存在,则返回 true,否则返回 false。
- remove(x) :从集合中移除 x。如果 x 存在,则返回 true,否则返回 false。
- contains(x) :如果 x 存在,则返回 true,否则返回 false。
在设计集合实现时,我们需要牢记一个原则:我们可以购买更多的内存,但无法购买更多的时间。在选择运行速度更快但消耗更多内存的算法和运行速度较慢但消耗更少内存的算法时,我们通常会选择更快的算法(在合理范围内)。
哈希集(有时称为哈希表)是实现集合的一种有效方法。哈希集通常实现为一个数组,称为表。每个表项是一个或多个项的引用。哈希函数将项映射到整数,以便不同的项通常映射到不同的值。要添加、移除或测试项的成员资格,需将哈希函数应用于该项(对表大小取模)以确定与该项关联的表项。
超级会员免费看
订阅专栏 解锁全文
3863

被折叠的 条评论
为什么被折叠?



