处理JNI代码中的线程

时间:2017-11-15 11:58:53

标签: java c++ java-native-interface

我在C ++中有一个缓存实现,可以通过JNI从JAVA代码访问。 为了允许并发访问缓存我需要锁定它,我很困惑我应该在我的C ++程序中使用什么类型的锁?我应该使用JNI的montiorEnter / Exit,因为执行jni代码的线程是java线程还是std :: mutex cacheMtx?感谢

1 个答案:

答案 0 :(得分:0)

在这里查看一下从不同线程访问JVM的示例代码。

http://jnicookbook.owsiak.org/recipe-no-027/

通常,您希望确保获得对JVM的访问权限,使用它,然后释放所有内容。

enter image description here

在你的情况下,你的方法略有不同,因为你可能不会再调用JVM,但是,你可以使用pthread_mutex,因为你在JVM中加载的同一个共享库中。