- 主题:cpp为什么要把原子指令和memory_order搅和在一起
此言缘何而来?
--
FROM 221.218.160.*
atomic_load不是有重载,
一个是easy api,固定用串行化的order
一个是expert api,码农可以指定order
嫌麻烦或者无需求的,用easy api不就行了。
expert api留给有进一步的细粒度控制需求的人。
这样不是很好吗
【 在 stub 的大作中提到: 】
: 比如atomic_load, 无论任何memory_order都不影响这一块内存本身的语义, 完全可以把memory_order拆出来
--
FROM 221.218.160.*
这么说,你心目中的“原子指令”是哪条指令?以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.*