2 つの配列があるとします。
int[] array1 = new int[2000000];
int[] array2 = new int[2000000];
いくつかの値を配列に貼り付けてから、次のように array2 の内容を array1 に追加します。
for(int i = 0; i < 2000000; ++i) array1[i] += array2[i];
ここで、マルチプロセッサ マシンで処理を高速化したい場合、上記のようなループを実行する代わりに、2 つのスレッドを作成します。1 つは配列の最初の 1000000 要素を処理し、もう 1 つは配列の最後の 1000000 要素を処理しました。私のメイン スレッドは、これら 2 つのスレッドが終了したことを通知するのを待ってから、すべての種類の重要なものに array1 の値を使用し始めます。(2 つのワーカー スレッドは終了せずに再利用できることに注意してください。ただし、メイン スレッドは、両方がそうするように通知するまで再開されません。)
そこで、私の質問は次のとおりです。2 つのワーカー スレッドが配列に対して行った変更をメイン スレッドが確実に確認できるようにするにはどうすればよいでしょうか。これが起こると期待できますか、それとも、ワーカー スレッドが書き込みを配列にフラッシュし、メイン スレッドがキャッシュされた配列値を破棄するように、特別な手順を実行する必要がありますか?