【问题标题】:When is it safe to call a shared library from multiple threads using JNA/JNI?使用 JNA/JNI 从多个线程调用共享库何时安全?
【发布时间】:2013-01-25 06:56:35
【问题描述】:

我已经将一些FORTRAN 子例程编译成一个.so 文件,并且我正在使用JNAJava 调用它们。

从多个线程同时调用子程序(可重入)是否安全?

我不认为子程序保持任何全局状态,但是JNA 有什么要求吗?

【问题讨论】:

  • 嗯,这些编辑是为了什么?我没有意识到所有的编程语言和软件名称都必须是固定宽度的字体。

标签: java concurrency native jna shared-libraries


【解决方案1】:

AFAIK JNA 对多线程使用没有任何特定限制。至少我认为它没有,也没有显示出问题。 JNA 是无国籍的,所以我会感到惊讶。

【讨论】:

  • Peter 是正确的,JNA 在调用本机函数时不保持全局状态,除了本机库本身的句柄。如果要确保永远不会同时调用 FORTRAN 代码,可以使用 [Native.synchronizedLibrary()](twall.github.com/jna/3.5.1/javadoc/com/sun/jna/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多