网站设计框架,现在开网站做微商赚钱吗,iis不能新建网站,产品推广目标怎么写假设定义 volatile int i 0;
现在2个线程同时 i#xff0c;为什么数据还可能会出错#xff1f;一起来看下图#xff0c;虽然volatile的机制是#xff1a;如果volatile修饰的变量有修改#xff0c;那么会将变更内容写回主内存#xff0c;同时让其他线程工作内存的该变量缓…假设定义 volatile int i 0;
现在2个线程同时 i为什么数据还可能会出错一起来看下图虽然volatile的机制是如果volatile修饰的变量有修改那么会将变更内容写回主内存同时让其他线程工作内存的该变量缓存过期。但是这对原子性有什么用吗请看下图的volatile的回写流程这个流程就能看明白为啥不能保证原子性了。
当线程1执行了i目前i1了如果再通知线程2让其工作内存的缓存过期有用吗没用啊因为线程2也早就计算出来了i1也准备写回内存里线程2写回主内存的也是1。这个问题的关键点在于线程1、2同时加载了i0然后同时完成了运算i计算出i1然后这个往回写的过程和原子性无关。
那这计算了2次i最后主内存1数据肯定有问题的。