据我了解,C# 中的 'volatile' 修饰符有两个作用:
- 根据需要为目标处理器插入栅栏
- 防止某些编译器优化
在 x86 / amd64 上,(1) 无关紧要。这些处理器不需要用于易失语义的栅栏。(不过,ia64 不同。)
所以,我们归结为(2)。但是,对于我尝试过的示例, volatile 对 jit-ted 程序集没有任何影响。
我的问题是:您能否举一个 C# 代码示例的示例,其中在字段上添加“volatile”修饰符会导致不同的 jit-ted 汇编代码?
据我了解,C# 中的 'volatile' 修饰符有两个作用:
在 x86 / amd64 上,(1) 无关紧要。这些处理器不需要用于易失语义的栅栏。(不过,ia64 不同。)
所以,我们归结为(2)。但是,对于我尝试过的示例, volatile 对 jit-ted 程序集没有任何影响。
我的问题是:您能否举一个 C# 代码示例的示例,其中在字段上添加“volatile”修饰符会导致不同的 jit-ted 汇编代码?