我正在使用一个非可重入的库(用C编写)(即库中没有函数可重入)。假设我已经通过System.load加载了库以获取句柄“v”。由于重入问题(尝试过但无意义的结果),我无法在两个线程中使用v。我可以使用锁,但这会破坏我本可以获得的任何并行性。
我想做的是启动两个线程,然后在每个线程中加载库以获取两个不同的句柄(因此,加载的库有两个副本)。
这在Java中可行吗?
问候
Saptarshi
最佳答案
任何DLL只能由一个进程加载一次,因此我认为您无法实现所需的功能。您可以作弊并将DLL重命名为其他名称吗?
您的线程在DLL中花费了太多时间,因此没有其他并行性了吗?