異なるプロセッサ間で単一のスレッドをスケジュールする場合、毎回キャッシュをクリアする必要がありますか? キャッシュがクリアされていない場合、次のことが起こりません。
次の (疑似) コードを 2 つのプロセッサ P1 と P2 で実行するとします。
1. foo() {
2. int x=5;
3. x=10;
4. print x;
5. }
最初に、スレッドは P1 でスケジュールされ、行 1 と 2 が実行され、x のメモリ位置 (スタック上) のキャッシュに 5 が格納されます。
次に、スレッドは、行 3 を実行する P2 でスケジュールされ、x のメモリ位置のキャッシュに10を格納します。
最後に、スレッドは再び P1 でスケジュールされ、4 行目を実行すると、5 (P1 のキャッシュ内の x の値) が出力されます。
それでも、明らかに 10 が印刷されることを期待しています。