f**********w 发帖数: 93 | 1 面试的时候被问到这个问题,当时不是很清楚。
在网上查了下,声明变量volatile并不能保证多个CPU的缓存同步,只能保证对变量的读
写顺序,
我的问题是,
T0:线程1改变volatile 变量值,
T1:线程2读变量值,是要到自己的缓存里读还是去RAM上读?
那位能给解释一下? | a****l 发帖数: 8211 | 2 你根本就不需要考虑缓存同步的问题,除非你是做cpu的设计.卖给你的cpu都是设计好的
,保证同步的.
【在 f**********w 的大作中提到】 : 面试的时候被问到这个问题,当时不是很清楚。 : 在网上查了下,声明变量volatile并不能保证多个CPU的缓存同步,只能保证对变量的读 : 写顺序, : 我的问题是, : T0:线程1改变volatile 变量值, : T1:线程2读变量值,是要到自己的缓存里读还是去RAM上读? : 那位能给解释一下?
| e****d 发帖数: 895 | 3 Data synchronization among cores are not guaranteed.
【在 a****l 的大作中提到】 : 你根本就不需要考虑缓存同步的问题,除非你是做cpu的设计.卖给你的cpu都是设计好的 : ,保证同步的.
| t****t 发帖数: 6806 | 4 there is no "cache" concept in the world of c++ (i.e. no cache in c++ memory
model).
so for your question, volatile has nothing to do with cache or memory. so T0
is unrelated to T1.
【在 f**********w 的大作中提到】 : 面试的时候被问到这个问题,当时不是很清楚。 : 在网上查了下,声明变量volatile并不能保证多个CPU的缓存同步,只能保证对变量的读 : 写顺序, : 我的问题是, : T0:线程1改变volatile 变量值, : T1:线程2读变量值,是要到自己的缓存里读还是去RAM上读? : 那位能给解释一下?
| b******n 发帖数: 592 | 5 缓存对性能有影响,到自己缓存取值最快,其次到相邻两核,到相对的核缓存取值最慢
。对数值没有影响,同步软件不需要考虑
【在 a****l 的大作中提到】 : 你根本就不需要考虑缓存同步的问题,除非你是做cpu的设计.卖给你的cpu都是设计好的 : ,保证同步的.
|
|