私が理解していることから、C# の 'volatile' 修飾子には 2 つの効果があります。
- ターゲット プロセッサの必要に応じてフェンスを挿入します。
- 特定のコンパイラの最適化を防ぎます
x86 / amd64 では、(1) は関係ありません。これらのプロセッサは、揮発性セマンティクスのフェンスを必要としません。(ia64は違うけど)
ということで、(2) にたどり着きました。しかし、私が試した例では、揮発性は jit-ted アセンブリに何の違いもありません。
私の質問は: フィールドに 'volatile' 修飾子を追加すると、異なる jit-ted アセンブリ コードになる C# コード サンプルの例を挙げていただけますか?