2

C++ で行われた計算の進行状況を Java で表示するにはどうすればよいですか?

Java アプリケーションは JNI を介して C++ メソッドを呼び出します。たとえば、Java アプリケーションと C++ メソッドの間で を共有するにはどうすればよいdouble progress;でしょうか?

JNIでマルチスレッドがどのように処理されるかはよくわかりません。

また、対象プラットフォームは Windows と Linux です。

4

1 に答える 1

1

ネイティブ側から Java に進行状況を報告する方法は複数あります。

1 つは、JNI を介して C++ から Java オブジェクトのメソッドを呼び出すことです。C++ 計算メソッド自体、または他のメソッドでオブジェクトを渡すことができます。

もう 1 つは、メモリの領域を直接 ByteBuffer と共有することです。Java では、ByteBuffer.allocateDirect()を呼び出してバッファーを作成します。バッファーを C++ に渡し、そこでGetDirectBufferAddress()を使用してそのメモリ アドレスを取得します。C++ では、バッファに直接書き込みます。Java では、変更をポーリングします。

于 2013-04-02T16:23:22.367 に答える