博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# 中 Volatile关键字理解
阅读量:6146 次
发布时间:2019-06-21

本文共 377 字,大约阅读时间需要 1 分钟。

Volatile 字面的意思时易变的,不稳定的。在C#中也差不多可以这样理解。

编译器在优化代码时,可能会把经常用到的代码存在Cache里面,然后下一次调用就直接读取Cache而不是内存,这样就大大提高了效率。但是问题也随之而来了。

在多线程程序中,如果把一个变量放入Cache后,又有其他线程改变了变量的值,那么本线程是无法知道这个变化的。它可能会直接读Cache里的数据。但是很不幸,Cache里的数据已经过期了,读出来的是不合时宜的脏数据。这时就会出现bug。

用Volatile声明变量可以解决这个问题。用Volatile声明的变量就相当于告诉编译器,我不要把这个变量写Cache,因为这个变量是可能发生改变的。

转载于:https://www.cnblogs.com/blosaa/archive/2011/09/25/2189993.html

你可能感兴趣的文章
2016总结
查看>>
指令周期 机器周期 状态周期 振荡时钟周期(时钟周期)(转)
查看>>
恶意程序入侵 dbuspm-session 发现了新的方法制这种恶意程序
查看>>
JavaWeb应用出现HTTP 500-Unable to compile class for JSP 错误 的解决
查看>>
六种微服务架构的设计模式
查看>>
Unity Remote 5 使用
查看>>
swift开发多线程篇 - 多线程基础
查看>>
《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)...
查看>>
Selenium2+python自动化37-爬页面源码(page_source)
查看>>
pm2-web
查看>>
011-Spring Boot 运行流程分析SpringApplication.run
查看>>
[解决方案]sql server复制需要有实际的服务器名称才能连接到服务器
查看>>
用yarn替代npm
查看>>
ReSharper2017.3的列对齐、排版格式、列对齐错误的修复
查看>>
BZOJ3273 : liars
查看>>
mysql开发之---每日一得01
查看>>
Java基础-MySQL数据库扫盲篇
查看>>
Echarts关于仪表盘
查看>>
php实现求数组中出现次数超过一半的数字(isset($arr[$val]))(取不同数看剩)(排序取中)...
查看>>
(转)创业的注意事项
查看>>