2011-05-05 74 views
1

我有一个多线程的JAVA应用程序,它使用共享的c lib。如果我从不同的线程访问这个库,会发生什么?JNI和多线程

谢谢,那鸿

回答

1

这完全依赖于C库。如果该函数没有存储任何状态(例如,只计算一些结果并仅在堆栈中使用局部变量),那么从多个线程使用它将是安全的。否则,你必须注意状态是为每个线程单独存储的,例如,通过使用malloc并为进一步的调用返回一个句柄,以便以后的调用将重用malloced内存块中的状态。

如果我不知道代码的内部,我更喜欢构建一个小的C应用程序并使用Runtime.exec调用它,但是这仅在C函数做足够的工作来证明exec执行开销时才有用。

+0

谢谢................... – nmnir 2011-05-05 14:57:44