- 主题:cpp为什么要把原子指令和memory_order搅和在一起
也许是我没看懂你的问题?atomic是利用memory order的primitive造出来的一个组件而已。换句话说,atomic是program order的一个instance 。不知道有没有回答你的问题?
【 在 stub 的大作中提到: 】
: 我开始也以为原子指令本身就是sc语义,但是后来发现,这与cpp中的内存序语义相悖,也就是我前面的反证,你也没有解释清这个反证,其实就是假设原子指令是某一种内存序,那么必然与别的内存序相悖
--
FROM 85.76.38.*
这么说,你心目中的“原子指令”是哪条指令?以x86为例。
应该是编译器或者库作者根据码农指定的mem order选取合适的0~N条指令来实现对应的mem order语义才对
不存在独立于mem order的“原子指令”,或者说每条指令都有隐含的对应的mem order
mem order不仅影响cpu的动态乱序执行,也影响编译器的静态指令重排。
【 在 stub 的大作中提到: 】
: 如果原子指令本身是有比如aqurie release等语义,那么到底是什么语义呢,假如指令本身是sc语义,那么指定relax内存序有什么意义呢
--
修改:z16166 FROM 221.218.160.*
FROM 221.218.160.*
没搅一起吧
用原子操作来说明有地址的内存这种场景下的memory order
还有另一种是没有地址的,约束好在该memory order 前/后的 行为是啥
【 在 stub 的大作中提到: 】
: 明明是两件不直接搭嘎的事
--
FROM 116.76.168.*
没有order的原子操作除了作为计数器,没有其他大作用吧。
【 在 stub (stub) 的大作中提到: 】
: 明明是两件不直接搭嘎的事
: --
:
:
--
FROM 223.104.213.*
【 在 ensonmj 的大作中提到: 】
: 没有order的原子操作除了作为计数器,没有其他大作用吧。
有道理
--
FROM 61.48.14.*