Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过JNI共享进度更新? 如何在java中显示C++中的计算进度?< /p>_Java_C++_Multithreading_Java Native Interface_Shared Memory - Fatal编程技术网

如何通过JNI共享进度更新? 如何在java中显示C++中的计算进度?< /p>

如何通过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++中,直接写入

java应用程序通过JNI调用C++方法,我如何共享,例如,代码>双重进度;java应用程序与C++方法之间的代码>? 我真的不知道JNI是如何处理多线程的


此外,目标平台是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的建议。我试试看。