关于volatile对变量自增不保证原子性的原因所产生的疑问。
在多线程情况下,有i变量:
volatile int i = 0;
这种情况下,如果多线程对i进行自增操作:i++,结果可能会与预期值不同,这是什么原因呢?
先来看看大多人对这一错误的解释:
是因为volatile不能保证原子性,而i++其实有三步操作,读,修改,写,并不是原子操作,所以volatile当然不能保证结果的准确性,解释完毕!
其实博主我觉得这种解释相当的流氓
让我想起
原创
2018-01-31 19:32:14 ·
2066 阅读 ·
6 评论