您的位置:首页 > 其它

对于重排序概念的理解与实战

2018-03-12 13:48 218 查看
首先 重排序是指的指令顺序不一定会按照程序代码顺序执行, 这里又要提出一个数据依赖的概念,  如果操作1和操作2没有数据依赖性, 那么编译器处理器有可能会把他们进行重排, 重排序的目的就是为了提高运行并发度。在编译阶段,处理器必须遵循as-if-serial语义(不管怎么重排序,程序运行的结果不会改变),当然这个结论是基于单线程的前提之下。代码如下。





然后经过多次运行会发现结果有时是1,有时为空。  也就是1 2程序的执行顺序发生了颠倒(没有数据依赖),然后另一个线程读到了flag为true时,进行Syso时a还有没被赋值所以会出现结果为空的情况
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: