Android プロジェクトに取り組んでいますが、操作がパフォーマンスのボトルネックになることがわかりました。この操作は大きな配列 A に対して機能し、結果を別の配列 B に格納します。
この操作は並列化できることがわかりました。配列 A は N 個の小さなセグメントに分割できます。この操作は、各セグメントに対して個別に実行でき、結果を B の対応するセグメントに格納できます。
この操作は、GetPrimitiveArrayCritical/ReleasePrimitiveArrayCritical ペアを使用してネイティブ コードで記述され、配列 A と B にアクセスします。
私の質問は、マルチスレッドを使用している場合、 GetPrimitiveArrayCritical(pEnv, A, 0) が異なるスレッドから複数回呼び出されることです。GetPrimitiveArrayCritical はブロックしますか? つまり、1 つのスレッドがこの呼び出しを行った場合、最初のスレッドが ReleasePrimitiveArrayCritical() を呼び出す前に、2 番目のスレッドが同じ呼び出しを行うことができますか?
助けてください。