美文网首页
volatile 关键字作用

volatile 关键字作用

作者: lmf_cb09 | 来源:发表于2019-05-17 01:24 被阅读0次

可见性

单核 CPU

1.1 在单 CPU 时代,不会有缓存同步问题。 cpu 从内存中将数据加载到高速 cache,运算完成后写往 cache 更新数据,再需要(具体时机是什么?)将 cache 数据写入内存。虽然是在多线程的环境中,但由于由始至终都是操作同一块内存或 cache,不存在数据不一致的问题。

(单个 cpu 图)

1.2 在多 CPU 时代,不同线程的执行可以被分发到不同的 CPU 上,与此同时同一块内存的数据将加载两个甚至更多不同 CPU 的 cache 中,每个 CPU 在自己的 cache 中更新数据,这就产生不缓存不一致的情况。

(补充例子,如 A B 两个 cpu ,同时写一块内存 m,将 m 分别加载到 cache_a、cache_b,各自更新为 v1, v2)

1.3 volatile 关键字是在 cpu 写 cache 的时候,对 cache 加锁

原理:补充缓存一致性协议

补充代码示例,javap 将代码编译为中间机器码,前后对比有没有 volatile 关键字,机器码有什么不同

  1. 有序性

相关文章

网友评论

      本文标题:volatile 关键字作用

      本文链接:https://www.haomeiwen.com/subject/spugaqtx.html