项目中需要通过 jni 调用动态库,有单个 java 进程并行调用 jni 逻辑的需求,而动态库内是线程不安全的单线程逻辑且动态库没法改,请问各位有没有解决办法
|
v2ebSep 24, 2022 via Android
1
串行
|
|
darkengineSep 24, 2022
2
|
|
keifafaSep 24, 2022 via Android
3
多进程?
|
|
4
@darkengine 结合源码看了下,感觉有机会成,我试试
|
|
5
@darkengine 有一个 static Vector<String> loadedLibraryNames 存放已加载的库名,不允许在不同的 classloader 实例去加载相同的库
|
|
pursuerSep 24, 2022
6
通常操作系统不支持同名动态库重名加载,可以看下动态库改名是否行得通,不过也可能还会有符号冲突,还有一种方案是网上找定制开发的动态库加载器
|
|
darkengineSep 24, 2022
7
@fanxasy 我也没实践过呢,按照这个 https://stackoverflow.com/questions/16189217/same-native-library-loaded-by-different-class-loader 说的,看来是不能实现的了。
|