一针见血系列[8]: 什么叫内存可见性?什么叫寄存器可见性?

栏目:一针见血 作者:admin 日期:2018-10-29 评论:0 点击: 1,245 次

数据在哪里存在呢?只在内存吗?不是的。数据在内存中存在,但是当用的时候会加载到CPU的寄存器里面。内存和寄存器是两个地方,从而出现了新的名词:内存可见性和寄存器可见性。

为什么叫内存可见性呢?感觉很奇怪的名字。其实,明白以下道理就不奇怪了:

数据的流动过程是:内存->寄存器->计算器


很多时候,数据从内存地址读取到寄存器里面,后面的计算过程中CPU就一直使用寄存器里面的值,即是内存地址上的值发生变化,CPU也不知道,CPU此时就是井底之蛙,而变量此时可以称为:寄存器可见性。

但是当变量被volatile修饰之后,CPU就不再偷懒,只要用到数据,它都会越过寄存器,直接从内存中读取,然后再在计算器中计算,最后返回给内存,这个时候变量就不在寄存器里面停留,就当寄存器不存在一样,这就称为内存可见性。

一针见血系列[8]: 什么叫内存可见性?什么叫寄存器可见性?:等您坐沙发呢!

发表评论