码迷,mamicode.com
首页 > 其他好文 > 详细

关键字volatile

时间:2019-08-15 12:33:41      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:编译   脏数据   多线程程序   volatil   改变   线程   出现   变量   bug   

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

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

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

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

关键字volatile

标签:编译   脏数据   多线程程序   volatil   改变   线程   出现   变量   bug   

原文地址:https://www.cnblogs.com/shipengda/p/11357050.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!