我需要一个可以超过64位的位掩码,这些位掩码可以被Java原子操作。
“明显的”候选人(两者都需要引入某种锁定方案)是:
BitSet
”)有没有关于此事的文件? (不必是特定于Java的。)
答案 0 :(得分:0)
从您的澄清中,您真正需要的是关于如何撰写" atomic" Java中的操作。
对于你想做的事情,我无法想到避免使用锁的方法。毕竟,即使只是writing to a long
or double
is not atomic without synchronization。
以下是与您要执行的操作相关的一些链接:
您应根据此数据结构的预期用例确定要使用的锁定机制。
https://blog.takipi.com/java-8-stampedlocks-vs-readwritelocks-and-synchronized/
此外,有些人可能会抱怨过早优化,但我也想在问题出现之前考虑代码的效率。但是,在这种情况下使用同步/锁定可能并不像您想象的那么糟糕。
如果你想要更低级别,那么我会诉诸JNI
。
然而,无论你走多低级,我认为使用锁/同步仍然是不可避免的,因为并不能保证硬件会有指令可以按原理做你想要的。 CPU如何以原子方式跨多个单词执行or
操作?
作为旁注,如果您要使用这些位掩码并希望获得最高性能,那么可能可能值得为GPU编写此代码。虽然我不能完全确定其优缺点,但仍有待进一步研究......
我认为您正在寻找硬件目前无法提供的效率水平。