我正在创建一个适合我的concurrnetHashtable,与concurrentHashMap差别不大,我使用AtomicReferenceFieldUpdater进行CASNext操作(通常支持CAS,但我们也可以执行CASNext),所以我正在走正确的道路?虽然通常我在这个concurrentHashTable中获得了比锁定哈希表更好的性能,但有时事情并没有成功
所以我得出以下结论:
如果可用处理器的数量大于哈希表中可用的桶数,则获得锁争用的概率更高,因此在这种情况下,concurrentHashTable将比锁定方法更好地工作,并且如果阅读量很大(例如85-期刊) 90%阅读操作),那么它的使用效果很好..
所以请建议我,我正走在正确的道路上,并正确地假设事情?
如果你有时间,请查看此页面上的代码code
在这个哈希表中,如果元素不存在,我正在进行插入...
那么告诉我这是否是一种正确的无锁方法?
答案 0 :(得分:1)
不是一个直接的答案,但如果你想改进CHM,请看看Cliff博士写的那个点击:here
除此之外,如果不知道你想要解决的问题,很难提供帮助......
答案 1 :(得分:0)
在并发哈希映射中有三个主要操作需要担心:添加元素,删除元素并重新散列
只需使用CaS即可轻松删除和添加
然而,重新散列将会左右引入比赛,这可能会导致数据被丢弃,某些操作元素不可见,infinite loops这很难做到并且整体上使用r / w锁定表格更容易