これは私の状況です:Java:JNI関数を使用して連続するC++関数を呼び出すスレッドを停止するにはどうすればよいですか?
"JavaToCpp"クラスのJNIメソッドを使用してC++ DLLにデータの配列を送信するJavaアプリケーションがあります。
C++ DLLがすべてのデータを受信すると、C++ DLLはいくつかの処理を開始します。
(長い)(C++)プロシージャ/サブルーチン中にJavaインターフェイスがフリーズしないように、新しいスレッドを使用して「JavaToCpp」クラスを実行しています。
Iは、作業(C++)手順/サブルーチンを停止するために2つのメソッドを実装し:
- 最初の「STOP」を:それはきれいにできるように、C++ DLLによって読み取られようとしているファイルを作成しています実行中のプロシージャ/サブルーチンを停止します。
- もう一つは「KILL」:シャットダウンになっている/直接
実行されているC++手続き/サブルーチンを殺すの問題はしばらく探した後、私はそれをperfomする何か良いトリックを見つけられませんでした、ということです。
だから、手続き/サブルーチンが実行されているされている間、誰のは、スレッドを殺す方法についてのアイデアを得た場合...
はい、申し訳ありませんが、私は "プロシージャ/サブルーチン"を意味しました。 「プロセス」を使用してC++ DLLを呼び出すと、同じ方法で動作しますか? (私はそれがより多くのメモリを使用すると仮定し、私のressourcesはDllと共有されませんでした(例では、私のC++ DLLから結果をJava GUIに追加するJavaメソッドを呼び出さなければなりません) – Jsncrdnl
@ Kuroicloud666:同じプロセス内で呼び出します。別のプロセスを使用する場合は、TCP/IPソケット(おそらくより簡単)やパイプ(おそらく高速)、一時ファイル(いくつかのケースでは大丈夫かもしれません)などのプロセス間通信メカニズムを使用する必要があります。したがって、これらを切り替えるのは簡単ではありません。基本的な設計上の決定です。 –
オコケ、答えてくれてありがとう。 – Jsncrdnl