2013-01-25 35 views
1

我編譯了一些FORTRAN子程序到.so文件中,我用JNAJava調用它們。何時使用JNA/JNI從多個線程調用共享庫可以安全使用?

從多個線程同時調用子程序(可重入)是否安全?

我不認爲子程序保持任何全局狀態,但有沒有JNA的任何要求?

+2

恩,這些修改是什麼?我沒有意識到所有的編程語言和軟件名稱都必須是固定寬度的字體。 –

回答

2

AFAIK JNA對多線程的使用沒有任何特定的限制。至少我認爲它沒有,並沒有顯示出問題。 JNA是無國籍的,所以如果真的發生了,我會感到驚訝。

+2

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

相關問題