異なる変数が同じキャッシュ ライン内にある場合、False Sharingが発生する可能性があります。つまり、2 つの異なるスレッド (異なるコアで実行されている) が 2 つの異なる変数にアクセスしていても、それらの 2 つの変数が同じキャッシュ ラインに存在する場合、キャッシュの一貫性がトリガーされるたびに、パフォーマンスが低下します。
ここで、これらの変数がアトミック変数であるとします (アトミックとは、C++ の などのメモリ フェンスを導入する変数を意味しますatomic<t>
)、そこで false 共有が問題になるか、アトミック変数が同じキャッシュ ラインにあるかどうかは問題ではありません。いずれにしても、キャッシュの一貫性が導入されると思われます。つまり、アトミック変数を同じキャッシュ ラインに配置すると、同じキャッシュ ラインに配置しない場合よりもアプリケーションが遅くなりますか?