as-if-seral的语义是:不管怎么重排序(编译器和处理器为了提高并行度),(单线程)程序的执行结果不能被改变。

为了遵守as-if-seral语义,编译器和处理器不会对存在数据依赖关系的操作做重排序,因为这种重排序会改变执行结果。

在单线程程序中,对存在控制依赖的操作重排序,不会改变执行结果(这也是as-if-seral语义允许对存在控制依赖的操作做重排序的原因);

但在多线程程序中,对存在控制依赖的操作做重排序,可能会改变程序执行的结果。

posted on 2017-11-22 20:24  飞奔的菜鸟  阅读(164)  评论(0编辑  收藏  举报