- 1
- 0
- 约2.56千字
- 约 5页
- 2022-10-10 发布于浙江
- 举报
C#.NET:理解volatile关键字
要理解 C# 中的 volatile 关键字,就要先知道编译器背后的一个基本优化原理。
比如对于下面这段代码:
public class Example
{
public int x;
public void DoWork()
{
x = 5;
va y = x + 10;
Debug.WriteLine(x = +x + , y = +y);
}
}
在 Release 模式下,编译器读取 x = 5 后紧接着读取 y = x + 10 ,在单线程思
维模式下,编译器会认为 y 的值始终都是 15。所以编译器会把 y = x + 10 优化
为 y = 15 ,避免每次读取 y 都执行一次 x + 5。但 x 字段的值可能在运行时被
其它的线程修改,我们拿到的 y 值并不是通过最新修改的 x 计算得来的,y 的值
永远都是 15。
也就是说,编译器在 Release 模式下会对字段的访问进行优化,它假定字段都
是由单个线程访问的,把与该字段相关的表达式运算结果编译成常量缓存起来,
避免每次访问都重复运算。但这样就可能导致其它线程修改了字段值而当前线程
却读取不到最新的字段值。为了防止编译器这么做,
您可能关注的文档
最近下载
- TEGOSorb气味中和剂在异味治理中的测试及优势性能分析.ppt VIP
- 光伏项目危险源辨识、风险评价表及重要危险源清单(光伏区).pdf VIP
- 2026年全市党员干部党规党纪廉政知识竞赛题库(附答案).docx VIP
- 发展中的安县域经济.ppt VIP
- 湘美版(2024)小学一年级美术上册全册精品教案汇编(共25个精品教案).docx VIP
- 2026秋新北师大版四年级上册小学数学教学计划附教学进度表.docx VIP
- TCPI 13002-2023 石油天然气钻采设备 可溶桥塞性能指标和检测规范.pdf VIP
- 辽宁省地质图(高清).pdf VIP
- 京东集团后端开发工程师笔试考试题库含答案.docx VIP
- C语言程序设计 课件全套 朱琨 机械 第1--9章 C语言语法基础 ---- 嵌入式技术基础实践方法.pptx
原创力文档

文档评论(0)