6

私が理解していることから、C# の 'volatile' 修飾子には 2 つの効果があります。

  1. ターゲット プロセッサの必要に応じてフェンスを挿入します。
  2. 特定のコンパイラの最適化を防ぎます

x86 / amd64 では、(1) は関係ありません。これらのプロセッサは、揮発性セマンティクスのフェンスを必要としません。(ia64は違うけど)

ということで、(2) にたどり着きました。しかし、私が試した例では、揮発性は jit-ted アセンブリに何の違いもありません。

私の質問は: フィールドに 'volatile' 修飾子を追加すると、異なる jit-ted アセンブリ コードになる C# コード サンプルの例を挙げていただけますか?

4

2 に答える 2

2

多分これはあなたが探しているものです。

于 2010-02-19T09:44:54.737 に答える
1

Marc Gravell は、volatile キーワードの欠如がどのように問題を引き起こすかについて、再現可能な例を示しています。

ここでも議論されています。

(Marc のように) コンパイラの最適化は、リリース モードでコンパイルされた場合にのみ見られることに注意してください。

于 2010-02-19T09:53:35.867 に答える