关于扩大位掩码的任何文章?

时间:2017-11-02 09:19:25

标签: java memory-management synchronization locking bitmask

我需要一个可以超过64位的位掩码,这些位掩码可以被Java原子操作。

“明显的”候选人(两者都需要引入某种锁定方案)是:

  • 重新分配为固定大小的连续区域
  • 由链式词组成的断裂位掩码(“线程安全BitSet”)

有没有关于此事的文件? (不必是特定于Java的。)

1 个答案:

答案 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编写此代码。虽然我不能完全确定其优缺点,但仍有待进一步研究......

我认为您正在寻找硬件目前无法提供的效率水平。