InterlockCompareExchange操作をC++の変数に使用するアルゴリズムを使用すると、特定のスレッドによってデータセットが書き込まれているかどうかが判断されます小さなロック)、どのようにデータがi7上のレベル2キャッシュに格納されている場合、値を更新したインターロックされた操作が他のスレッドによって直ちに見られるようにするか。スレッド同期のためのインターロックの使用とキャッシュコヒーレンシの維持
マルチコアプロセッサのキャッシュ間でデータを一貫性を保つためにキャッシュコヒーレンシーを使用していますが、1つのコアがインターロック機能を持つ変数を更新し、キャッシュがコヒーレンシの問題をチェックして修正する小さなフレームすべてのコアがそれ自身のキャッシュにある変数をチェックしていますか? InterlockCompareExchange操作を実行している変数がvolatileであることを確認して、変更がメモリに直接書き込まれるようにすると、この問題は解決されますか?メモリバリア(VSのMemoryBarrier())がキャッシュのコヒーレンシを保証するのではなく、望ましくない命令の並べ替えを確実にすると確信するのは正しいですか?
私の質問があまりにも曖昧でないことを願っています。私はもしあればどんなコメントにも答えようとします。特定の問題はありませんが、この問題を投稿するソースコードはありませんが、これに問題がある場合は、特にC++ 0xのインターロックを部分的に持つことができます。その標準ライブラリの。
ありがとうございます。
"即時"はありません。書かれたものはすべて最終的に他のコアで見られます。何かが見られる絶対時間は心配するものではなく、他の書き込みに対する相対的な順序だけです。 – Ringding