如何在 Java 中显示在 C++ 中完成的计算的进度?
Java 应用程序通过 JNI 调用 C++ 方法,比方说,我如何在 Java 应用程序和 C++ 方法之间共享 double progress;
?
我真的不知道 JNI 是如何处理多线程的。
此外,目标平台是 Windows 和 Linux。
最佳答案
有多种方法可以将 native 端的进度报告给 Java。
一种是通过 JNI 从 C++ 调用 Java 对象上的方法。您可以在 C++ 计算方法本身或其他一些方法中传递对象。
另一种是与直接的 ByteBuffer 共享内存区域。在 Java 中,调用 ByteBuffer.allocateDirect()创建缓冲区。将缓冲区传递给 C++,然后使用 GetDirectBufferAddress()得到它的内存地址。在 C++ 中,直接写入缓冲区。在 Java 中,轮询更改。
关于java - 如何通过JNI分享进度更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15768748/