再びロックフリーについて何か...
単純な配列ベースの整数の循環 FIFO を実装するとします。FIFO は、2 つのスレッドのシングル プロデューサー、シングル コンシューマーによってアクセスされます。読み取りインデックスと書き込みインデックスは、アイテムがアクセスされた後に常に更新されます。単一の CPU では、インデックスへの書き込みアクセス権を持つスレッドは 1 つだけなので、これは安全です (インデックスの更新操作がアトミックであると仮定します)。SMP マシンでは、キャッシュと再配列のために両方の CPU がインデックスの異なる表現を参照する可能性があるため、問題が発生する可能性があります。
QTには、メモリフェンスも実装するクロスプラットフォームのアトミック変数があります.QAtomicIntを使用すると、FIFO実装SMPが安全になりますか、それとも何かを見落としていますか?