do {
var5 = this.getIntVolatile(var1, var2);
} while(!this.compareAndSwapInt(var1, var2, var5, var5 + var4));
说是 var1 是变量值,
问题 1.var5 是底层读取值 (底层是哪?。。主存吗)
在 var2 == var5 时 var1 = var5 + var4
问题 2.线程中判断到 var2 == var5 后,(还未执行 var1 = var5 + var4 时),瞬间。var2 让其他线程改掉了。
这不就不安全了吗? 所以说底层还是加锁了吗(这会这个底层又是哪呢)
我记着以前看过一个视频说是这一步是通过特殊硬件保证的?)
问题 3.什么是底层啊?主存? c++? cpu? 高速缓存?
求老哥们解惑
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.