C语言深入理解系列之专一王子:volatile.doc
《C语言深入理解系列之专一王子:volatile.doc》由会员分享,可在线阅读,更多相关《C语言深入理解系列之专一王子:volatile.doc(2页珍藏版)》请在三一文库上搜索。
1、C语言深入理解系列之专一王子:volatile每个变量和其名字一样善变,有时候它善变是发自内心的,有时候是外部因素决定的,只有volatile变量才会表里如一,因此获得了专一王子的美誉。volatile字面意思是易挥发、易变化的意思,它修饰的变量表示该变量的值很容易由于外部的因素而发生改变,强烈要求编译器要老老实实的在每次对变量进行访问时去内存里读取。举个生活中的栗子:你明天 有一个朋友要过生日,今天把要送的礼物打包好了,一般情况下,我们明天起来不需要再次打开验证一下里面的礼物是否存在,因为我们知道,只要礼物的外包装没有动过,里面的东西应该也没有动过。其实编译器和人一样聪明,为了提高效率也会玩
2、省事,做优化。如下面的例子:编译器扫描了代码发现上面,第一行代码将10赋给了整型变量a,之后a变量的值没有再发生变化,在后面的第二行中,将a变量的值取出来赋给b,在第三行代码里面将a变量的值赋给了c的时候,因为CPU访问内存速度慢,编译器为了提高效率,玩“省事”,直接将10赋给了c。单从上面的代码我们来看是没有问题的,就如同从外包装看生日礼物完好一样。但是,如果上述代码运行在多线程中,在一个线程上下文中没有改变它的值,但是我们却不能保证变量的值没有被其他线程所改变,就好比是,生日礼物放在其他人那里保管,我们不敢100%的确定它里面的东西完好。当然这种数据不一致的机制不仅仅出现在多线程中,同样在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 深入 理解 系列 专一 王子 volatile
链接地址:https://www.31doc.com/p-3250887.html