0

我正在创建一个适合我的 concurrnetHashtable,与 concurrentHashMap 几乎没有什么不同,我正在使用 AtomicReferenceFieldUpdater 进行 CASNext 操作(通常支持 CAS,但我们也可以执行 CASNext),所以我走的是正确的道路吗?虽然通常我在这个 concurrentHashTable 中获得比锁定哈希表更好的性能,但有时事情并没有解决。
所以我得出以下结论:
如果可用处理器的数量大于哈希表中可用的存储桶数量,则发生锁争用的可能性更高,因此在这种情况下,concurrentHashTable 将比锁定方法工作得更好,当然,如果阅读量很大(期刊说 85- 90%的阅读操作),那么它很好用..所以请建议我,我是否走在正确的道路上,并且假设事情正确?
如果您有时间,请查看此页面上的代码代码 在此哈希表中,如果元素尚不存在,我将进行插入...所以请告诉我这是否是正确的无锁方法?

4

2 回答 2

1

不是一个直接的答案,但如果您希望改进 CHM,请查看 Cliff 博士所写的内容 点击:这里

除此之外,如果不知道您要解决什么问题,就很难提供帮助...

于 2013-02-01T20:56:02.763 回答
0

在并发哈希映射中,需要担心 3 个主要操作:添加元素、删除元素和重新哈希

仅使用 CaS 即可轻松删除和添加

但是,重新散列会引入左右竞争,这可能会导致数据被丢弃,元素对于某些操作不可见,无限循环,这很难做到正确,并且在整个表上使用 r/w 锁要容易得多

于 2011-05-17T11:50:08.163 回答