如何通过JNI分享进度更新?

时间:2013-04-02 16:02:01

标签: java c++ multithreading java-native-interface shared-memory

如何在Java中显示用C ++完成计算的进度?

java应用程序通过JNI调用C ++方法,我怎么能在java应用程序和C ++方法之间共享一个double progress;呢?

我真的不知道如何在JNI中处理多线程。

此外,目标平台是Windows和Linux。

1 个答案:

答案 0 :(得分:1)

有多种方法可以报告从本机端到Java的进度。

一种是通过JNI从C ++调用Java对象的方法。您可以在C ++计算方法本身或其他方法中传递对象。

另一种方法是使用直接ByteBuffer共享内存区域。在Java中,调用ByteBuffer.allocateDirect()来创建缓冲区。将缓冲区传递给C ++,然后使用GetDirectBufferAddress()获取其内存地址。在C ++中,直接写入缓冲区。在Java中,轮询更改。