2013-02-01 9 views
6

2つのスレッドがと異なるが近いメモリ位置に書き込む、C++ 11アプリケーションがあり、プリミティブ型への簡単なポインタを使用しているとします。これらの書き込みが両方とも最終的に(おそらく両方がboost::barrierに達した後に)最終的にメモリに終わるか、または両方のCPUコアがそのデータを含む独自のキャッシュラインを保持するリスクがあり、2番目のコアがRAMは、最初の書き込みによって行われた変更を上書きし、取り消しますか?同じキャッシュライン内の別の場所への同時書き込み

C++ 11メモリモデルに準拠したすべての状況で、キャッシュの一貫性が私の目を引きつけてくれることを願っていますが、私は確信しています。

答えて

7

はい、キャッシュコヒーレンシメカニズムがこれを処理します。これはFalse sharingと呼ばれ、データをよりよく分離してパフォーマンスを向上させることで回避する必要があります。

+3

キャッシュコヒーレンスプロトコルの例:[MESI](http://en.wikipedia.org/wiki/MESI_protocol)。 –

関連する問題