是否存在共享库副本共享内存的情况?

时间:2013-10-05 22:58:58

标签: java gcc shared-libraries jna gfortran

在处理一个旧的(但很复杂的)数字库时,我将其视为一个黑盒子,我发现该库不是可重入的。因此,为了安全地从多个线程调用,我创建了多个库的副本,这些副本由线程安全队列管理。有关详细信息,请参阅以下问题:

基本上,我有一个库mvnpack.so,我已将nn通常是我机器上的处理器数量复制到mvnpack.so.i i 1}}从0n-1。然后,将每个映射到JNA接口。副本本身与字节相同。

虽然我认为这会提高库的吞吐量并允许它并行使用,但库仍然表现出重新入侵问题的症状,例如奇怪的数值结果,随机返回的NaN值等我已将问题从所有其他问题中分离出来,似乎答案可能是一个我不太了解的问题:

  

如果我使用相同的代码映射多个相同的共享库,但是同一进程的内存空间具有不同的文件名,是否仍会共享内存?

我之前收到的问题的答案表明这不会发生,但似乎确实如此。如果是这种情况,是否有任何我可以使用的编译器或链接器选项会阻止这些副本共享内存?我正在使用gfortrangcc)来编译由JNA映射到Java进程的共享库。

0 个答案:

没有答案