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

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

如何在 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/

相关文章:

android - 如何在定义的时间间隔在 Android 中运行 Runnable 线程?

java - 带列标题的 StatefulBeanToCsv

java - 在 ComboBox 中为 FilteredList 设置谓词会影响输入

c++ - 在任何函数外部声明的可变大小类型

android - Android NDK 应用程序中的 wstring 支持

java - 使用 Runnable 或 Thread 的 Java 线程问题

python - 使用线程时的套接字问题

java - Sublime Text 3 - 插件配置文件

java - 迁移后 Eclipse 不会将邮件属性传递给 Spring Boot

c++ - 使用 static_cast 实现的转换运算符