重排序发生的场景

A.处理器执行时的优化:
a.处理器层面的“乱序”优化节省了大量等待时间,提高了处理器的性能。
所谓“乱序”只是被叫做“乱序”,实际上也遵循着一定规则:只要两个指令之间不存在数据依赖,就可以对这两个指令乱序。不必关心数据依赖的精确定义,可以理解为:只要不影响程序单线程、顺序执行的结果,就可以对两个指令重排序
b.乱序优化在单核时代不影响正确性;但多核时代的多线程能够在不同的核上实现真正的并行,一旦线程间共享数据,就出现问题了

B.编译器编译时的优化:
目的和处理器是一样的

C.缓存同步顺序:
该问题是由可见性引发的
重排序发生的场景

重排序发生的场景
写缓存区没有及时刷新,使得处理器执行的读写操作与内存上顺序不一致。
处理器A读b=0,处理器B读a=0。A1写a=1先写到处理器A的写缓存区中,此时内存中a=0。如果这时处理器B从内存中读a,读到的将是0。
可能会出现x,y都是0。
重排序发生的场景