我有一个使用共享c lib的多线程JAVA应用程序。如果我从不同的线程访问它,该库会发生什么?
谢谢, 内厄姆
答案 0 :(得分:1)
这绝对取决于C库。如果函数没有存储任何状态(例如只计算一些结果并且只在堆栈上使用局部变量),那么从多个线程中使用它是安全的。否则,您必须注意每个线程单独存储状态,例如通过使用malloc并返回一个句柄进行进一步的调用,以便后面的调用将重用malloced内存块中的状态。
如果我不知道代码的内部,我更喜欢构建一个小的C应用程序并使用Runtime.exec调用它,但这只有在C函数做足够的工作来证明exec开销时才有用。