先週、スレッド間の通信を可能にするための小さなスレッド クラスと一方向メッセージ パイプを作成しました (明らかに、双方向通信のためにスレッドごとに 2 つのパイプが必要です)。Athlon 64 X2 ではすべて問題なく動作しましたが、両方のスレッドが同じ変数を参照していて、各コアでこの変数のローカルにキャッシュされた値が同期していない場合、問題が発生するのではないかと考えていました。
volatileキーワードが変数をメモリから強制的に更新することは知っていますが、マルチコア x86 プロセッサですべてのコアのキャッシュを強制的に同期させる方法はありますか? これは私が心配する必要があることですか、それとも軽量ロックメカニズム (私は揮発性パイプ変数を設定するために _InterlockedExchange を使用していました) の揮発性および適切な使用は、マルチコア x86 CPU 用の「ロックフリー」コードを記述したいすべてのケースを処理しますか?
クリティカル セクション、ミューテックス、イベントなどについては既に認識しており、使用したことがあります。どの力を認識していないか、キャッシュの一貫性を強制するために使用できるx86組み込み関数があるかどうか、私は主に疑問に思っています。