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

18.1 volatile的作用

时间:2019-01-13 17:17:39      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:提高   程序   关键字   寄存器   读取   volatile   要求   vol   例子   

  volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。

  1.编译器的优化

  在本次线程内,当读取一个变量时,为提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中;以后再取变量值时,就直接从寄存器中取值;

当变量值在本线程里改变时,会同时把变量的新值copy到该寄存器中,以便保持一致

当变量在因别的线程等而改变了值,该寄存器的值不会相应改变,从而造成应用程序读取的值和实际的变量值不一致

  举个例子:

  发薪资时,会计每次都把员工叫来登记他们的银行卡号;有一次,会计为了省事,没有即时登记,用了以前登记的银行卡号;刚好一个员工的银行卡丢了,已挂失该银行卡号;从而造成该员工领不到工资。

  员工 -- 原始变量地址

  银行卡号 -- 原始变量在寄存器的备份

18.1 volatile的作用

标签:提高   程序   关键字   寄存器   读取   volatile   要求   vol   例子   

原文地址:https://www.cnblogs.com/baixu/p/10263009.html

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