我編譯了一些FORTRAN
子程序到.so
文件中,我用JNA
從Java
調用它們。何時使用JNA/JNI從多個線程調用共享庫可以安全使用?
從多個線程同時調用子程序(可重入)是否安全?
我不認爲子程序保持任何全局狀態,但有沒有JNA
的任何要求?
我編譯了一些FORTRAN
子程序到.so
文件中,我用JNA
從Java
調用它們。何時使用JNA/JNI從多個線程調用共享庫可以安全使用?
從多個線程同時調用子程序(可重入)是否安全?
我不認爲子程序保持任何全局狀態,但有沒有JNA
的任何要求?
AFAIK JNA對多線程的使用沒有任何特定的限制。至少我認爲它沒有,並沒有顯示出問題。 JNA是無國籍的,所以如果真的發生了,我會感到驚訝。
Peter是正確的,JNA在調用本地函數時不包含全局狀態,除了本地庫本身的句柄之外。如果你想確保你的FORTRAN代碼不會被同時調用,你可以使用['Native.synchronizedLibrary()'](http://twall.github.com/jna/3.5.1/javadoc/com/sun/jna/ Native.html#synchronizedLibrary(com.sun.jna.Library) – technomage
恩,這些修改是什麼?我沒有意識到所有的編程語言和軟件名稱都必須是固定寬度的字體。 –