如何通过JNI共享进度更新? 如何在java中显示C++中的计算进度?< /p>
java应用程序通过JNI调用C++方法,我如何共享,例如,代码>双重进度;java应用程序与C++方法之间的代码>? 我真的不知道JNI是如何处理多线程的如何通过JNI共享进度更新? 如何在java中显示C++中的计算进度?< /p>,java,c++,multithreading,java-native-interface,shared-memory,Java,C++,Multithreading,Java Native Interface,Shared Memory,java应用程序通过JNI调用C++方法,我如何共享,例如,代码>双重进度;java应用程序与C++方法之间的代码>? 我真的不知道JNI是如何处理多线程的 此外,目标平台是Windows和Linux。有多种方法可以报告从本机到Java的进度 一个是通过JNI调用C++对象上的java对象的方法。您可以通过C++计算方法本身的对象,或者通过其他方法。 另一种方法是与直接ByteBuffer共享内存区域。在Java中,调用创建缓冲区。将缓冲区传递给C++,并使用它获取内存地址。在C++中,直接写入
此外,目标平台是Windows和Linux。有多种方法可以报告从本机到Java的进度
一个是通过JNI调用C++对象上的java对象的方法。您可以通过C++计算方法本身的对象,或者通过其他方法。
另一种方法是与直接ByteBuffer共享内存区域。在Java中,调用创建缓冲区。将缓冲区传递给C++,并使用它获取内存地址。在C++中,直接写入缓冲区。在Java中,轮询更改我不认为你需要共享内存,你只需要调用C++的java方法,并通过双代码> CurrurnPrime/TooS/<代码>,它将给你在0-1范围内的双值。@ Djava,我从Java调用C++代码。第一个调用将启动算法(在新线程上,java或C++)。现在,按照您的建议,如果两个线程彼此不认识,第二个调用如何访问
currentProgress
变量?@ddriver或者,让我这样说,您建议调用一个方法来访问currentProgress
。我不同意你的建议的是:谁在修改这个currentProgress
,因此,谁在运行实际的计算?啊,这就是@ddriver的建议。我试试看。