C++0x のアトミック変数のドキュメントの 1 つで、メモリの順序を説明するときに、次のように言及されています。
リリース - 取得注文
厳密に順序付けされたシステム (x86、SPARC、IBM メインフレーム) では、リリースと取得の順序付けは自動的に行われます。この同期モードでは追加の CPU 命令は発行されません。特定のコンパイラの最適化のみが影響を受けます...
まず、x86 が厳密なメモリ順序に従っているというのは本当ですか? 常にこれを課すのは非常に非効率的です。すべての書き込みと読み取りにフェンスがあるということですか?
また、x86 システムで整列された int がある場合、アトミック変数は何らかの目的を果たしますか?