码迷,mamicode.com
首页 > 其他好文 > 详细

什么是as-if-serial

时间:2020-12-31 12:47:15      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:其它   处理   get   高级   不能   targe   item   变量   jpg   

as-if-serial语义的意思是:不管怎么进行指令重排序,单线程内程序的执行结果不能被改变。编译器,处理器进行指令重排序都必须要遵守as-if-serial语义规则。

为了遵守as-if-serial语义,编译器和处理器对存在依赖关系的操作,都不会对其进行重排序,因为这样的重排序很可能会改变执行的结果,但是对不存在依赖关系的操作,就有可能进行重排序。

 

happens-before规则

虽然As-If-Serial语义可以保证单线程内指令重排序的正确性,但对于多线程还是可能出现问题,多线程环境下存在可见性的问题。

可见性是指当一个线程修改了共享变量的值,其它线程能够适时得知这个修改。在单线程环境中,如果在程序前面修改了某个变量的值,后面的程序一定会读取到那个变量的新值。这看起来很自然,然而当变量的写操作和读操作在不同的线程中时,情况却并非如此。

技术图片技术图片

 

什么是as-if-serial

标签:其它   处理   get   高级   不能   targe   item   变量   jpg   

原文地址:https://www.cnblogs.com/dongjiang/p/14195501.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!