データセットが特定のスレッドによって書き込まれているかどうかを判断するC++の変数でInterlockCompareExchange操作を使用するある種のアルゴリズムを使用する場合(独自の小さなロックを作成することによって)、インターロックされた操作を確実にするにはどうすればよいですか?値を更新したものは、データがi7のレベル2キャッシュなどに格納されている場合、他のスレッドによってすぐに認識されます。
マルチコアプロセッサのキャッシュ間でデータの一貫性を保つためにキャッシュコヒーレンシが使用されていることは知っていますが、あるコアがインターロック機能を使用して変数を更新し、キャッシュがコヒーレンシの問題をチェックして修正するときの短い時間枠についてはどうでしょうか独自のキャッシュにある変数をチェックしていますか?InterlockCompareExchange操作を行っている変数が揮発性であり、変更がメモリに直接書き込まれるようにした場合、この問題は修正されますか?メモリバリア(VSのMemoryBarrier())はキャッシュの一貫性を保証せず、不要な命令の並べ替えのみを保証すると信じるのは正しいですか?
私の質問が曖昧すぎないことを願っています。もしそうなら、コメントに答えようとします。特定の問題がないため、この質問で投稿するソースコードはありませんが、特にc ++ 0xにインターロックが含まれている場合に、問題が発生する可能性があるかどうかを後で参照できるようにしたいと思います。その標準ライブラリの。
ありがとうございました。