C++原子操作执行可能性与代码变换合规性问询
C++原子操作相关问题解答
第一个原子操作示例的执行路径问题
- 不存在
#2读取#1的可行执行路径。假设存在该路径,#0会先于#3执行,这会导致循环无法终止——而抽象机不会认可这种无限循环且无进展的执行路径,因此该路径在语义上是不可行的。
变体示例的代码转换合法性问题
- 变体示例中,
#2读取#1是可行执行路径:循环可通过break正常退出。 - 合规实现允许将
t1中的循环转换为指定形式,依据C++标准[intro.abstract]p6的规则:合规实现只需要生成抽象机可行执行路径对应的可观测行为即可。只要转换后的代码最终表现出的可观测行为和抽象机的合法执行路径一致,这种优化转换就是符合标准的。
内容的提问来源于stack exchange,提问作者xmh0511
相关产品推荐
相关产品推荐

