作为主题,如果在C/C++中很容易找到缓存行大小并在开发高效的MT代码的同时处理这个问题,那么Java如何处理这个问题呢?
干杯
发布于 2011-05-27 22:10:18
一般不会。你得自己解决这个问题。如果这真的很重要,您可能必须使用JNI来获取有关系统的低级别细节。
另一方面,Java从一开始就支持MT应用程序的编写。
发布于 2013-06-24 20:04:40
Java很有可能从Java 8开始处理这个问题。9月142声明:
当两个不同的核正在使用的两个内存位置在同一高速缓存线上结束并且至少一个核心正在执行写入时,就会发生内存争用。对于高度竞争的内存位置,这可能是一个严重的性能和可伸缩性问题。这种增强的目的是避免核心之间的内存争用,至少在开发过程中我们可以很容易识别的字段上。
这里有有证据表明这种情况确实发生了,不是蒸气器。
https://stackoverflow.com/questions/6158146
复制相似问题